【发布时间】:2012-02-17 21:49:11
【问题描述】:
作为应用程序的一部分,我有一个画布对象 <Canvas Name="canvas"/>,我试图将时钟的组件插入其中,如下所示
// Add Background
Image bg = new Image();
bg.SetValue(Canvas.ZIndexProperty, 0);
bg.Source = new BitmapImage(new Uri("images/background.png", UriKind.Relative));
canvas.Width = bg.Source.Width;
canvas.Height = bg.Source.Height;
canvas.Children.Add(bg);
// Add second hand
Image hand = new Image();
hand.SetValue(Canvas.ZIndexProperty, 10);
hand.Source = new BitmapImage(new Uri("images/hand.png", UriKind.Relative));
canvas.Children.Add(hand);
第一个图像(bg)显示正确,但第二个图像(手)似乎已缩放(原始尺寸为 5 x 61 像素,创建后询问图像尺寸显示它已变为 6.66 x 84.02 显示单位) (原图为 130 x 130 像素,显示单位为 130.4)
我可以找到的所有查询答案(StackOverflow 和 Google)都建议设置图像的 DPI,但我的两个图像都是 96 DPI(根据 Paint) 我已经尝试将图像声明移动到 XAML 中(不是长期解决方案),但这没有任何区别。我尝试更改插入图像的顺序,但没有效果。我在 XAML 中明确设置了画布宽度/高度 - 没有效果。 我已经明确设置了图像的大小 - 再次没有效果。
谁能告诉我这是怎么回事?
补充:在 windows7 64bit 上使用 .net 4 编译
已解决: Paint 报告图像的 DPI 设置不正确。 Paint.Net 给了我正确的值,通过将其更改为 96 DPI,问题得到了解决
【问题讨论】:
-
你用代码而不是 XAML 编写这个有什么原因吗?
-
大部分设置都是动态的。指针将酌情旋转,秒针是可选的。展望未来,我希望有各种可选组件,这些组件将以编程方式决定。
-
添加:我刚刚尝试在 XAML 中添加两个图像 - 同样的问题
-
要么发布您的解决方案作为答案并接受它,或者如果您认为它对其他人没有用处,则删除该问题。
-
我现在已经发布了解决方案作为答案。只要我的代表允许,就会接受它
标签: c# wpf image wpf-controls