如何在DSL工具上修复模糊的Icon Decorator?

时间:2009-07-31 17:02:42

标签: visual-studio dsl-tools dsl

我遇到了这个问题,经过广泛的研究后,我找到了根本原因和一个对其他人有用的解决方法。

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

域特定语言的绘图表面通常具有96dpi的分辨率,并且使用0.06英寸的偏移定位图标装饰器。将其转换为像素,它将成为绘图表面中5.76像素的偏移量。由于无法在屏幕上绘制“半像素”,因此GDI +会调整图像以尝试模拟“高频像素”定位。这就是图像模糊的原因。

我的解决方法是使用Icon装饰器类的Horizo​​ntal Offset和Vertical Offset属性来修复“半像素”装饰器位置。如果使用“0.0025”英寸作为垂直和水平偏移,当图像定位从英寸转换为像素时,它变为6像素,而不是5.76。之所以会发生这种情况,是因为现在偏移量是默认值0.06英寸加上您设置的偏移量0.0025 = 0.0625。

我还发现使用透明度的png图像会导致图像模糊,即使使用我在此处建议的偏移解决方法也是如此。将图像转换为位图格式可以解决问题。

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

1 个答案:

答案 0 :(得分:0)

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

在重写方法下

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

我调用自定义方法FixBitmap

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

此方法接收DSL将显示的原始图像,但是返回完全相同的图像,但创建为新的位图

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

如果你检查新的实例属性几乎没有什么区别(我不太记得,因为我大约1年前实现了这个)。 另外,我主要使用具有透明度的.png文件,它们看起来完全一样。

希望这有帮助。 如果您需要任何进一步的帮助,请不要犹豫, 问候, 路易斯