代码之家  ›  专栏  ›  技术社区  ›  John Biazo

如何修复DSL上的图标模糊?

  •  1
  • John Biazo  · 技术社区  · 7 年前

    图标装饰器变得“模糊”,因为它在形状上的位置以及从像素到英寸的转换。

    通常,领域特定语言的绘图面分辨率为96dpi,图标装饰器的定位偏移量为0.06英寸。将其转换为像素后,它在绘图表面上的偏移量为5.76像素。由于不可能在屏幕上绘制“半像素”,GDI+调整图像,试图模拟“haf像素”的定位。这就是图像变得模糊的原因。

    我还发现使用带有透明度的png图像会导致图像模糊,甚至使用我在这里建议的偏移解决方法。将图像转换为位图格式可以解决此问题。

    如果有人也有任何解决问题的建议,请添加您的解决方案或解决方法。

    1 回复  |  直到 17 年前
        1
  •  0
  •   Luis Filipe    17 年前

    我通过创建新位图修复了模糊问题:

    在重写方法下

    public override System.Drawing.Image GetDisplayImage(ShapeElement parentShape)
    

    我调用我的自定义方法FixBitmap

    Bitmap imageFixed = DynamicImageHelper.FixBitmap(image, out dynamicOffset);
    

    Bitmap fixedImage = new Bitmap(original, original.Width, original.Height);
    return fixedImage;
    

    如果您检查新的实例属性,它们之间的差别很小(我不太记得是哪一个,因为我是在1年前实现的)。 另外,我主要使用带有透明度的.png文件,它们看起来完全一样。

    希望这有帮助。 如果你还需要帮助,不要犹豫, 卢丝