Рисование XOR на C #

Я пытаюсь изучить C # .Net.

Некоторое время назад я написал небольшое (хобби) приложение Analog Clock на VB (отредактируйте: VB6, если быть точным), и я подумал, что напишу его на C # .NET, как часть моего обучения процесса.

В приложении VB я нарисовал стрелки часов в режиме XOR Drawmode, так что мне нужно переместить вторую стрелку, мне просто нужно было перерисовать ее в предыдущей позиции, а затем нарисовать текущую позицию - Мне не нужно обновлять всю форму. Все, что я сделал, было

Me.DrawMode = vbNotXorPen

а потом

Me.Line...

на форме VB

В C # я не нашел эквивалентного режима Xor Pen Draw.

я нашел

ControlPaint.DrawReversibleLine

где-то в сети, но я не уверен, предназначен ли ControlPaint для таких целей (и я не понимаю, исходя из какой системы координат ControlPaint рисует)

Есть ли эквивалент рисования XOR в C # .NET? Или есть лучший способ делать то, что я делаю (с максимальной производительностью)

(И VB, и C # - мои хобби. Так что не стесняйтесь поправлять меня, когда я ошибаюсь)


person Nivas    schedule 03.11.2008    source источник
comment
Когда-то в VB вы, должно быть, имеете в виду VB6 или более раннюю версию. Это правильно?   -  person cfeduke    schedule 03.11.2008
comment
да. Это было в VB6. Обновил вопрос.   -  person Nivas    schedule 03.11.2008


Ответы (2)


ИМХО, до тех пор, пока вы не нацеливаетесь на действительно медленные компьютеры, вам не нужно оптимизировать производительность с помощью техники XOR.

Поскольку вы будете рисовать секундную стрелку только один раз в секунду, полная перерисовка часов будет намного лучше. Кроме того, вторая рука будет хорошо выглядеть, если нарисована напрямую, и для более четкого вида используется режим сглаживания, установленный на Anti alias.

Чтобы оптимизировать производительность, вы можете создавать BMP для часов каждую минуту, а затем рисовать на нем секундную стрелку.

person nullDev    schedule 03.11.2008

.NET / GDI + не поддерживает рисование XOR. Вам придется обойти это, используя вызовы p / invoke нескольких собственных функций.

См. Ссылку ниже для получения дополнительной информации

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

person arul    schedule 03.11.2008