【问题标题】:Use a different image depending on the computer's dpi setting根据计算机的 dpi 设置使用不同的图像
【发布时间】:2012-10-07 11:18:17
【问题描述】:

我在我的应用程序中使用了 16x16 像素的图像,因此在标准 dpi 设置为 96 时我可以得到清晰的边缘并且不会自动调整大小。

当用户更改他们的 dpi 设置时,图像会被放大,并且由于源文件只有 16x16,它们看起来自然很糟糕。有没有一种方法可以为特定图像源提供多个图像,并且会自动选择最好的一个?比如我提供了16x16、20x20和24x24pixels的图片,当图片的尺寸是16x16[wpf units],所以我有一个96的完美匹配, 120 和 144 dpi?

【问题讨论】:

    标签: wpf image dpi


    【解决方案1】:

    我能想到的最好的办法是在运行时根据系统的 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;
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-11
      • 1970-01-01
      • 2014-04-27
      相关资源
      最近更新 更多