我正在使用WPF应用程序,窗口尺寸为1200 * 932,包括标题栏。
它在我的台式机显示器(2560 * 1440,缩放比例为125%)上显示良好,实际尺寸为1500 * 1165。
但是,当我在笔记本电脑(比例为200%的2736 * 1824)上运行它时,实际大小为2400 * 1864,这太大了。
如何处理?我是说动态的?
编辑:
原始问题可能不清楚。抱歉。
我想做的就像UWP应用程序如何工作。在我的桌面上,UWP应用程序的默认窗口大小是1500 * 1165(也许是1200 * 932 * 125%);在笔记本电脑上,窗口大小为2048 * 1600(也许是1024 * 800 * 200%)。
UWP默认提供该功能吗? WPF可以这样做吗?我想也许是通过编程的方式。
为什么不使用UWP:我发现UWP在某种沙箱内运行。对网络有一些限制,这对我的应用程序很重要。
答案 0 :(得分:0)
如果您想更改应用程序窗口的大小,请使用以下链接:WPF window size和此wpf-windows-overview#window-size
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
SizeToContent="WidthAndHeight">
但是我认为您正在WPF应用程序中寻找DPi集成,请查看他的链接以获取更多信息
https://docs.microsoft.com/en-us/windows/desktop/hidpi/declaring-managed-apps-dpi-aware
答案 1 :(得分:0)
您误会的是正在使用的单元。 当设置容器的宽度时,您不会告诉他容器的宽度正好是500像素。当您开始考虑字体时,这完全有意义。字体大小25在您的显示器上会很好,但4 k的显示器可能很小,而且不可读。要解决该标准单位,您要将容器设置为1/96英寸。您可以按照以下引号中的说明进行修改:
qualifiedDouble如上所述的double值,后跟一个 以下单元声明字符串:px,in,cm,pt。
px(默认)是与设备无关的单位(每单位1/96英寸)
英寸为英寸; 1in == 96px
厘米是厘米; 1cm ==(96 / 2.54)px pt是点; 1pt ==(96/72)px
自动启用自动调整大小的行为。请参阅备注。
答案 2 :(得分:0)
最后我知道我想要什么。而且问题的目的不明确:(
我希望应用程序的大小(窗口大小以及内容大小)根据屏幕分辨率和缩放比例进行调整,以便我的应用程序在第一次午餐时将占据(几乎)屏幕的同一分区。切勿变得太大,无法进入屏幕之外,也不要太小而看不清。
因此我将窗口Height
和Width
绑定到
public double ReSizeWidth
{
get
{
return ((float)SystemParameters.VirtualScreenWidth) * (1500f / 2560f);
// 1500f / 2560f is the percentage
}
}
public double ReSizeHeight
{
get
{
return ReSizeWidth * 0.75f + 32;
// keep the window aspect ratio
}
}
并将其添加到最外面的Grid
<Grid.LayoutTransform>
<ScaleTransform CenterX="0"
CenterY="0"
ScaleX="{Binding ElementName=myMainWindow, Path=ScaleValue}"
ScaleY="{Binding ElementName=myXMainWindow, Path=ScaleValue}"/>
</Grid.LayoutTransform>
后面的代码
public double ScaleValue
{
get
{
return ReSizeWidth / 1200;
// 1200 is the design height
}
}
尽管可以,但是我认为它可能会导致诸如模糊或混叠之类的不良影响。我认为应该有内置的功能或某些功能可以满足此要求。