Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Блокирование вызова метода Paint в C#

44K
16 декабря 2010 года
Mixim
18 / / 01.01.2010
Работаю с объектом PictureBox в C#, на который вывожу различные стрелочки, прямоугольники и т.д. по желанию пользователя, который вводит координаты добавляемой геометрической фигуры, размер и т.д. Ясно и понятно, что когда пользователь введет большие координаты, чем текущие размеры PictureBox, необходимо увеличить размер области рисования и вот тут начинаются проблемы... Без особой хитрости пишу:
 
Код:
if(curX>aPictureBox.Width)
aPictureBox.Width = curX + 20;
if(curY>aPictureBox.Height)
aPictureBox.Height = curY + 25;

и казалось бы все должно работать, а ведь нет - при изменении размера aPictureBox вызывается метод Paint, который все затирает(закрашивает область рисования задним цветом фона). Возможно ли как-то отменить вызов метода Paint, а если нельзя, то как тогда можно без "последствий" увеличивать размер области рисования в PaintBox
2.1K
16 декабря 2010 года
Norgat
452 / / 12.08.2009
Цитата: Mixim
Возможно ли как-то отменить вызов метода Paint, а если нельзя, то как тогда можно без "последствий" увеличивать размер области рисования в PaintBox



Храни фигуры, которые вводит пользователь в списке.
Когда вводится новая фигура - добавляй её в список фигур и вызывай Refresh() для PictureBox.

На событие Paint у PictureBox повесь свой обработчик, который будет производить отрисовку фигур из списка.

В таком случае потерь данных при ресайзе не будет.

7
16 декабря 2010 года
@pixo $oft
3.4K / / 20.09.2006
От себя добавлю,что лучше,наверное,не список фигур хранить и все их потом вырисовывать,и хранить выводимое изображение.По крайней мере,с использованием API такое часто делается(используется контекст в памяти)
В VB 6 было такое свойство–AutoRedraw.Может быть,его аналог есть и в C#
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог