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

6
我在我的应用程序中使用了16x16像素的图像,这样我就可以得到清晰的边缘,并且在标准dpi设置为96时不会自动调整大小。
当用户更改他们的dpi设置时,图像会变大,由于源文件只有16x16,它们看起来自然很糟糕。有没有办法为特定的图像源提供多个图像,最佳图像将自动选择?例如,当图像的大小为16x16 [wpf单位]时,我提供了大小为16x16、20x20和24x24像素的图像,因此我有一个完美的匹配96、120和144 dpi的图像吗?
1个回答

0
我能想到的最好的方法是根据系统的DPI设置,在运行时动态地设置图像源。在代码后台中,您可以动态设置,例如 -
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;

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接