c# - 添加到 WPF Canvas 的图像更改大小

标签 c# wpf image wpf-controls

作为应用程序的一部分,我有一个 Canvas 对象 <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 显示单元) (bg 原始尺寸为 130 x 130 像素,显示单位为 130.4)

我能找到的所有查询答案(StackOverflow 和 Google)都建议图像的 DPI 设置,但我的两个图像都是 96 DPI(根据 Paint) 我曾尝试将图像声明移至 XAML(不是长期解决方案),但这没有任何区别。我试过更改插入图像的顺序但没有效果。我已在 XAML 中明确设置 Canvas 宽度/高度 - 无效。 我已明确设置图像的大小 - 再次无效。

谁能告诉我这是怎么回事?

补充:在windows7 64位上使用.net 4编译

已解决: Paint 报告图像的 DPI 设置不正确。 Paint.Net 给了我正确的值,通过将其更改为 96 DPI,问题得到解决

最佳答案

已解决的问题:Paint 报告的 DPI 不正确。使用备用绘画包 (Paint.net) 显示 DPI 不同。更正此设置可解决问题。

关于c# - 添加到 WPF Canvas 的图像更改大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8990381/

相关文章:

c# - 从类型 'System.String'到类型 '' Y'的参数转换失败,因为没有类型转换器可以在这些类型之间转换

WPF DataGrid 最佳实践?

c# - 在 WPF 中为组合框设置默认名称

css - 图片在不同浏览器中的位置,html

ios - 在不影响 objective-c 质量的情况下缩小图像

C# 使用 Xamarin 导入 MySql

c# - 方法内联如何用于 C# 中的自动属性?

C#标签颜色改变

c# - 指定 DataContext (WPF) 的正确方法

php - 如何在图像周围添加图像边框?