Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF控件大小大于显式设置的宽度和高度值_C#_Wpf - Fatal编程技术网

C# WPF控件大小大于显式设置的宽度和高度值

C# WPF控件大小大于显式设置的宽度和高度值,c#,wpf,C#,Wpf,我创建了一个宽度和高度固定的画布(256x256)。在它旁边,我放置了一个图像控件,显示一个256x256纹理,无需拉伸。屏幕上两个控件的实际大小怎么可能相差这么大 -是说明尺寸不匹配的屏幕截图 和-TestLines256.png,以防有人喜欢检查它(可能会指出我很愚蠢,这个纹理是180x180,而不是我声称的256x256) 创建控件的XAML: <Window x:Class="OversizedQuad.MainWindow" xmlns="http://schemas.m

我创建了一个宽度和高度固定的画布(256x256)。在它旁边,我放置了一个图像控件,显示一个256x256纹理,无需拉伸。屏幕上两个控件的实际大小怎么可能相差这么大

-是说明尺寸不匹配的屏幕截图

和-TestLines256.png,以防有人喜欢检查它(可能会指出我很愚蠢,这个纹理是180x180,而不是我声称的256x256)

创建控件的XAML:

<Window x:Class="OversizedQuad.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" SizeToContent="WidthAndHeight">
<StackPanel Orientation="Horizontal">
    <Canvas Width="256" Height="256" Background="Red" />
    <Image Stretch="None" Source="TestLines256.png" />
</StackPanel>


WPF具有独立于设备的像素。 因此,像素的大小根据DPI设置而不同。我猜是因为这个原因,图像大小和画布大小不同

选中此项:


WPF具有独立于设备的像素。 因此,像素的大小根据DPI设置而不同。我猜是因为这个原因,图像大小和画布大小不同

选中此项:


非常感谢。但是我可以在我的应用程序(特别是这个画布)中强制某个控件来保持我通过宽度和高度属性提供的基于像素的大小吗?第一个想法是创建一个CustomControl,跟踪宽度和高度发生变化,最后根据DPI值重新计算一个新的大小。不知道。我认为您需要模仿GDI控制像素大小算法,并相应调整画布的大小。谢谢!但是我可以在我的应用程序(特别是这个画布)中强制某个控件来保持我通过宽度和高度属性提供的基于像素的大小吗?第一个想法是创建一个CustomControl,跟踪宽度和高度发生变化,最后根据DPI值重新计算一个新的大小。不知道。我认为您需要模仿GDI控制像素大小算法,并相应地调整画布的大小。