根据计算机的dpi设置使用不同的图像

时间:2012-10-07 11:18:17

标签: wpf image dpi

我在我的应用程序中使用了16x16像素图像,这样我就可以获得清晰的边缘,并且在标准dpi设置为96时没有自动调整大小。

当用户更改其dpi设置时,图像会变大,并且由于源文件仅为16x16,因此它们看起来自然很糟糕。有没有办法可以为特定的图像源提供多个图像,最好的图像会自动选择?例如,当图像的大小为16x16 [wpf units] 时,我提供大小为16x16,20x20和24x24 像素的图像,所以我有一个完美的匹配96, 120和144 dpi?

1 个答案:

答案 0 :(得分:0)

我能想到的最好是根据系统的DPI设置在运行时设置image source dynamically。在代码隐藏中,您可以动态设置 -

ImageViewer1.Source = new BitmapImage(new Uri(@"\\myserver\\folder1\\sample.png"));

在您的班级中收听此活动,以获得有关计算机更改的dpi设置的通知 - Microsoft.Win32.SystemEvents.DisplaySettingsChanged。有关详细信息,请访问此处 - System Events

此外,您可以使用以下代码获取系统dpi值 -

float dpiX, dpiY;
Graphics graphics = this.CreateGraphics();
dpiX = graphics.DpiX;
dpiY = graphics.DpiY;

将此逻辑移动到属性,并根据属性值动态设置图像源。