Рисование XOR в C # - PullRequest
       47

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

1 голос
/ 03 ноября 2008

Я пытаюсь выучить 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 рисует)

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

(и VB, и C # - мои хобби. Поэтому не стесняйтесь исправлять меня, где бы я ни был неправ)

Ответы [ 2 ]

3 голосов
/ 03 ноября 2008

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

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

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

2 голосов
/ 03 ноября 2008

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...