我遇到了这个问题,经过广泛的研究后,我找到了根本原因和一个对其他人有用的解决方法。
图标装饰器变得“模糊”,因为它定位在形状上以及从像素到英寸的转换。
域特定语言的绘图表面通常具有96dpi的分辨率,并且使用0.06英寸的偏移定位图标装饰器。将其转换为像素,它将成为绘图表面中5.76像素的偏移量。由于无法在屏幕上绘制“半像素”,因此GDI +会调整图像以尝试模拟“高频像素”定位。这就是图像模糊的原因。
我的解决方法是使用Icon装饰器类的Horizontal Offset和Vertical Offset属性来修复“半像素”装饰器位置。如果使用“0.0025”英寸作为垂直和水平偏移,当图像定位从英寸转换为像素时,它变为6像素,而不是5.76。之所以会发生这种情况,是因为现在偏移量是默认值0.06英寸加上您设置的偏移量0.0025 = 0.0625。
我还发现使用透明度的png图像会导致图像模糊,即使使用我在此处建议的偏移解决方法也是如此。将图像转换为位图格式可以解决问题。
如果有人也有解决问题的建议,请添加您的解决方案或解决方法。
答案 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文件,它们看起来完全一样。
希望这有帮助。 如果您需要任何进一步的帮助,请不要犹豫, 问候, 路易斯