XOR. Неужели нет решения для такой банальной задачи!!!

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

val
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 168
Зарегистрирован: 14.11.2002 (Чт) 1:14

Сообщение val » 20.06.2005 (Пн) 16:33

Да... Пришлось порыться...
VB.NET не поддерживает XOR pen так как это было в VB6.

Можешь использовать
ControlPaint.DrawReversibleFrame или ControlPaint.DrawReversibleLine

пример дал Nick Bober в теме чем заменили XOR Pen?

а вот пример от Microsoft:
[url]
http://msdn.microsoft.com/library/defau ... eTopic.asp[/url][/quote]

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 20.06.2005 (Пн) 18:15

Теоретически, можно унаследоваться от Pen или Brush...
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

NicSoft
Обычный пользователь
Обычный пользователь
 
Сообщения: 80
Зарегистрирован: 05.04.2003 (Сб) 18:51
Откуда: Егорьевск

Сообщение NicSoft » 27.12.2005 (Вт) 23:15

В MSDN свойству DrawMode из VB6 ставится в эквивалент Pen.Color Property из .Net
Интересно, как именно его следует использовать?

NicSoft
Обычный пользователь
Обычный пользователь
 
Сообщения: 80
Зарегистрирован: 05.04.2003 (Сб) 18:51
Откуда: Егорьевск

Сообщение NicSoft » 07.01.2006 (Сб) 2:14

В своей программе я решил эту проблему так:
Создаю 2 Bitmap-а, на одном рисую основную графику, на втором то что двигается (у него прозрачный фон). В событии Paint вывожу их по очереди. При движении мыши второй Bitmap перерисовывается, и вызывается Paint.
В моем случае это работает не медленнее XorPen в VB6. И код проще.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 09.01.2006 (Пн) 12:12

Roman Koff писал(а):А можно на примерчик взглянуть?


Присоединяюсь!!! Очень хота взглянуть!
Весь мир матрица, а мы в нем потоки байтов!

NicSoft
Обычный пользователь
Обычный пользователь
 
Сообщения: 80
Зарегистрирован: 05.04.2003 (Сб) 18:51
Откуда: Егорьевск

Сообщение NicSoft » 09.01.2006 (Пн) 13:11

Постараюсь вырезать из программы нужные места.

Создаем bitmap-ы, и на их основе создаем Graphics-ы:
Код: Выделить всё
bm = New Bitmap(PictureBox1.ClientRectangle.Size.Width, PictureBox1.ClientRectangle.Size.Height)   
G = Graphics.FromImage(bm)
bm2 = New Bitmap(PictureBox1.ClientRectangle.Size.Width, PictureBox1.ClientRectangle.Size.Height)
bm2.MakeTransparent(Color.White)
G2 = Graphics.FromImage(bm)


.... Рисуем в G

Рисуем в G2:
Код: Выделить всё
G2.Clear(Color.Transparent)
.....
PictureBox1.Refresh()


Вывод графики на экран:
Код: Выделить всё
Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
e.Graphics.DrawImage(bm, 0, 0)
e.Graphics.DrawImage(bm2, 0, 0)
End Sub


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 38

    TopList