在CE上进行抗锯齿绘制线条

3

我正在使用C#.NET 3.5在Windows CE上向Graphics对象绘制一条直线。

我使用的代码如下:

e.Graphics.DrawLine(new Pen(Color.FromArgb(11, 118, 200), 2), x1, y1, x2, y2);

这个可以工作,但由于锯齿等原因看起来很糟糕。有没有办法绘制抗锯齿线条?

据我所知,Graphics对象不支持本地化,但是否有任何方法可以使用一些技巧“欺骗”这种效果?

3个回答

5

如果您在纯色背景上绘图,可以使用较粗的笔和介于背景颜色和线条颜色之间的颜色绘制实际线条之前的一条线,例如,在黑色背景上绘图:

e.Graphics.DrawLine(new Pen(Color.FromArgb(5, 59, 100), 3), x1, y1, x2, y2);
e.Graphics.DrawLine(new Pen(Color.FromArgb(11, 118, 200), 2), x1, y1, x2, y2);

这会给线条添加一个“光晕”效果(即使是在完美的水平/垂直线上)。

虽然不完美,但绝对是改善外观的简单方法!谢谢。 - Chris

2

我深表同情。几年前,我也在为.NETCF做类似的事情,结果走了很多有趣的路。最终的工作量比它的价值还大。看看这个可怕的东西:

http://freespace.virgin.net/hugo.elias/graphics/x_wuline.htm

http://social.msdn.microsoft.com/Forums/en-US/netfxcompact/thread/b34f56c4-585b-4ff5-ac7d-b6e2ae516ccf/

此外,这可能会提供一些答案,但也可能是WM GDI系统的有用替代品。

http://drawingcf.codeplex.com/

这个问题引导我去看了http://www.amanithvg.com/project.html,它提供了一个类似于OpenGL的框架,并带有Windows CE库。但可能对于几行代码来说有些大材小用了。

最后,您可以始终使用位图,但以后可能会遇到透明度的问题。


可能需要花费太多精力来实现那些建议 - 但还是谢谢! - Chris
@Chris 我完全同意你的看法! - Tom

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接