我在我的应用程序中使用了 16x16 像素的图像,因此我可以在标准 dpi 设置为 96 时获得清晰的边缘并且不会自动调整大小。
当用户更改他们的 dpi 设置时,图像会被放大,并且由于源文件只有 16x16,它们看起来自然很糟糕。有没有一种方法可以为特定图像源提供多个图像,并且会自动选择最好的一个?例如,我提供尺寸为 16x16、20x20 和 24x24像素的图像,当图像尺寸为 16x16 [wpf 单位]时,我有一个完美匹配 96、120 和 144 dpi 的图像吗?
我能想到的最好的方法是image source dynamically
根据系统的 DPI 设置在运行时设置。在代码隐藏中,您可以动态设置 -
ImageViewer1.Source = new BitmapImage(new Uri(@"\\myserver\\folder1\\sample.png"));
在您的班级收听此事件以获取有关计算机 dpi 设置更改的通知 - Microsoft.Win32.SystemEvents.DisplaySettingsChanged
。它的详细信息可以在这里找到 -系统事件
此外,您可以使用以下代码获取系统 dpi 值 -
float dpiX, dpiY;
Graphics graphics = this.CreateGraphics();
dpiX = graphics.DpiX;
dpiY = graphics.DpiY;
将此逻辑移至属性并根据属性值动态设置图像源。