WinRT:如何确保在Canvas上以像素完美的方式绘制图像?

sat*_*ine 5 c# canvas image windows-runtime winrt-xaml

我在Windows运行时环境中将图像实例添加到Canvas,并且在140和180刻度分辨率显示时我的图像不断放大,它在刻度分辨率100中看起来很完美.我尝试创建3个PNG图像,每个刻度尺寸一个:100 ,140,180但它仍然可以扩展它们,它们看起来很模糊.我在青色背景上创建了一个带有4个黑色像素的测试图像,我从模拟器中截取了一个截图,看看图像是如何模糊的,我的原始图像只有4个完美的黑色像素:

它很模糊,相信我

我尝试更改我的Image对象的拉伸模式,但它什么也没做.我正在使用此代码在运行时添加图像:

var bitmapImage = new BitmapImage();
StorageFile bitmapFile = await StorageFile.GetFileFromApplicationUriAsync(imageUri);
await bitmapImage.SetSourceAsync(await bitmapFile.OpenReadAsync());

Image image = new Image{ Source = bitmapImage};
image.SetValue(Canvas.LeftProperty, x);
image.SetValue(Canvas.TopProperty, y);
canvas.Children.Add(image);
Run Code Online (Sandbox Code Playgroud)

如何让图像在画布中完美地绘制像素,而不进行缩放和我想要的精确x/y坐标?

Jer*_*gen 1

如果图像仍然是网格状的,您可以将Stretch属性更改为:"None"

您应该查看它保存在什么 DPI 上。WPF 尝试独立于 DPI,因此它尝试在每个显示器上绘制相同尺寸的 5"x5" 图像。即使分辨率更高,它仍然应该是 5"x5",只有高分辨率才能以更高的质量渲染(光栅化)图像。

以下是一些信息:http://www.wpflearningexperience.com/?p =41

如何将 WPF 大小转换为物理像素?