在C#中进行XOR绘图

时间:2008-11-03 05:32:22

标签: c# vb6 xor-drawing

我正在努力学习C#.Net。

我曾经在VB中写过小(爱好)模拟时钟应用程序(编辑:VB6,确切地说),我想我会在C#.NET中重写,作为我学习的一部分过程

在VB应用程序中,我在XOR Drawmode中绘制了时钟,因此我必须移动秒针,我只需要在之前的位置重绘它然后绘制当前位置 - 我不需要刷新整个表格。我所做的只是

Me.DrawMode = vbNotXorPen

然后

Me.Line...

在VB表单上

在C#中,我没有找到等效的Xor Pen Draw模式。

我找到了

ControlPaint.DrawReversibleLine

网上的某个地方,但我不确定ControlPaint是否用于此类目的(我根据协调系统ControlPaint绘制的内容并不理解)

C#.NET中是否存在等效的XOR绘图? 或者有更好的方法来做我正在做的事情(具有最佳表现)

(VB和C#都是我的爱好。所以无论我错在哪里都随时纠正我)

2 个答案:

答案 0 :(得分:3)

.NET / GDI +不支持XOR绘图。您必须使用几个本机函数的p / invoke调用来解决它。

有关详细信息,请参阅以下链接

http://www.vbaccelerator.com/home/net/code/libraries/Graphics/ZoomIn/article.asp

答案 1 :(得分:2)

恕我直言,除非你的目标是一些非常慢的计算机,否则你不需要使用XOR技术来优化性能。

由于您只需要在一秒钟内绘制一次秒针,因此完全重绘时钟会好得多。此外,如果直接绘制,秒针将“看起来”很好,并使用平滑模式设置为Anti alias以获得更清晰的外观。

为了优化性能,您可以每隔一分钟为时钟创建一个bmp,然后在其上绘制秒针。