![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 04.07.2011
Сообщений: 4
|
![]()
Здравствуйте
Команды: ..... MainForm.Canvas.Rectangle(X1,Y1,X2, Y2); MainForm.Repaint; написанные обработчике Click кнопки не дают видимого результата. Команды: .... MainForm.Canvas.Rectangle(X1,Y1,X2, Y2); записанные в обработчик события OnPaint ожидаемый результат выдают. Объясните, пожалуйста, в чем дело? Спасибо. |
![]() |
![]() |
![]() |
#2 |
Delphi master
Пользователь
Регистрация: 28.05.2011
Сообщений: 96
|
![]()
Добавьте к вару юнита
Код:
Код:
БЯЯЯГГАААААА
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 11.03.2011
Сообщений: 426
|
![]()
// Рисуем на канве
MainForm.Canvas.Rectangle(X1,Y1,X2, Y2); // Обновляем канву - и затираем Ваш рисунок MainForm.Repaint; // Генерируем событие OnPaint |
![]() |
![]() |
![]() |
#4 | |
Новичок
Джуниор
Регистрация: 04.07.2011
Сообщений: 4
|
![]() Цитата:
MainForm.Canvas.Rectangle(X1,Y1,X2, Y2). Предположил, что результат будет виден после MainForm.Repaint. По аналогии, с присвоением неких свойств визуальным компонентам. Результат часто можно видеть только после Refresh(). В общем, вопрос остается. Почему отсутствует видимый результат команды MainForm.Canvas.Rectangle(X1,Y1,X2, Y2); выполненной в обработчике ONCLICK кнопки? Координаты были указаны правильно. Та же команда с теми же параметрами, вызванная в обработчике события ONPAINT формы сработала. |
|
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]()
> вопрос остается
ну так вам же написали, что Repaint затирает ваш рисунок, какие ещё вопросы могут быть.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
![]() |
![]() |
![]() |
#6 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,543
|
![]() Цитата:
программа — запись алгоритма на языке понятном транслятору
|
|
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]()
> система посчитала
тут прикол в том, что Repaint() вызывает сам программист )
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 11.03.2011
Сообщений: 426
|
![]()
При наступлении события OnPaint виден результат команды... Вопрос: почему? Ставим в событие OnPaint точку останова, допустим на Sleep(0), выполняем первую команду и... оказываемся на точке останова... Почему? Смотрим исходники...
|
![]() |
![]() |
![]() |
#9 | |
Новичок
Джуниор
Регистрация: 04.07.2011
Сообщений: 4
|
![]() Цитата:
Спасибо огромное! |
|
![]() |
![]() |
![]() |
#10 | |
Новичок
Джуниор
Регистрация: 04.07.2011
Сообщений: 4
|
![]() Цитата:
Объект Canvas не хранит изображение! Перерисовка формы восстанавливает изображение визуальных компонент на форме потому что эти компоненты фактически прорисовывают себя заново на основе текущих своих свойств. А вот нанесенное на CANVAS изображение не перерисовывается. Следовательно, для видимости рисунка по CANVAS необходимо выполнять рисование в обработчике ONPAINT. Для изменения изображения надо менять описывающие изображение параметры и отправлять WM_PAINT для перерисовки с новыми параметрами. Спасибо огромное! |
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
применение c++ | vvsh | Общие вопросы C/C++ | 21 | 22.01.2011 22:53 |
Применение yacc | Tane4ka | Общие вопросы C/C++ | 0 | 31.03.2010 21:38 |
применение ComboBox | Improviz | Компоненты Delphi | 2 | 21.02.2010 12:52 |
Применение формул | swips | Microsoft Office Excel | 2 | 30.06.2009 14:23 |
Применение KeyboardProc() | Zeraim | Win Api | 3 | 14.05.2008 12:42 |