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

dia*_*ler 6 wpf image dpi

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

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

Roh*_*ats 0

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

ImageViewer1.Source = new BitmapImage(new Uri(@"\\myserver\\folder1\\sample.png"));
Run Code Online (Sandbox Code Playgroud)

在课堂上收听此事件,以获取有关计算机 dpi 设置更改的通知 - Microsoft.Win32.SystemEvents.DisplaySettingsChanged。详细信息可以在这里找到 -系统事件

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

float dpiX, dpiY;
Graphics graphics = this.CreateGraphics();
dpiX = graphics.DpiX;
dpiY = graphics.DpiY;
Run Code Online (Sandbox Code Playgroud)

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