2010-09-05 234 views
0

我创建了一个具有固定宽度和高度(256x256)的画布。在它旁边,我放置了一个显示256x256纹理而不伸展的图像控件。屏幕上两种控件的实际尺寸差异如何?WPF控件大小大于明确设置的宽度和高度值

Here - 是显示尺寸不匹配的截图。

here - 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> 

+1

http://stackoverflow.com/questions/1189384/wpf-pixels-to-desktop-pixels – 2010-09-05 10:23:21

回答

4

WPF具有与设备无关的像素。 因此,像素的大小根据DPI设置而不同。我想这是因为图像大小和Canvas大小不同。

检查:

http://www.dotnetfunda.com/articles/article882-wpf-tutorial--a-beginning--1-.aspx

+0

谢谢!但是,我可以在我的应用程序(特别是这个画布)中强制某个控件保持通过宽度和高度属性提供的基于像素的尺寸吗?第一个想法是创建一个CustomControl,跟踪宽度和高度变化,并最终根据DPI值重新计算新的大小。 – pbalaga 2010-09-05 20:43:34

+0

不知道。我认为你需要模仿GDI控制像素大小算法并相应调整画布大小。 – abhishek 2010-09-07 10:58:19

相关问题