Вопрос про PaintBox ...

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Вопрос про PaintBox ...

Сообщение vitaly_l » 03.10.2012 12:47:43

Если на форму итд положить PaintBox,
а затем в onClick написать следующий код:

Код: Выделить всё
PaintBox1.Canvas.Ellipse(12,12,123,123);


То PaintBox, как и положено нарисует круг.
Суть вопроса в том что, если минимизировать приложение, то изображение круга - исчезнет. :cry:
Подпрограммы системы: Refresh; Repaint; - изображение не вернут...
Это норма или баг? :|

:arrow: Как сделать, чтобы изображение сохранялось при минимизации приложения :?: :oops:

Добавлено спустя 10 минут 50 секунд:
Пардон нашёл, умные программисты говорят:
PaintBox1.Canvas.Ellipse(12,12,123,123);
нужно прописать в OnPaint и всё будет работать... и действительно работает..., - это правильно?
только ==>>> не заливает цветом, а если положить в OnClick, без OnPaint, то закрашивает(заливает центр круга)... баг?...

А если у меня 1000 PaintBox'ов - всех писать в OnPaint??? у Timage - такого исчезновения нет... или "Как такое правильно готовить?"
Если кто заинтересуется исходник в приложении...


.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Вопрос про PaintBox ...

Сообщение B4rr4cuda » 03.10.2012 14:58:26

все правильно.. только в OnPaint.
vitaly_l писал(а): Timage - такого исчезновения нет..

А вы попробуйте рисовать не на канве изображения, который используется в TImage а на канве самого TImage... будете удивлены, но поведение то же, что и у PaintBox)
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

Re: Вопрос про PaintBox ...

Сообщение vitaly_l » 03.10.2012 16:02:07

B4rr4cuda писал(а):все правильно.. только в OnPaint.

БОЛЬШОЕ ЧЕЛОВЕЧЕСКОЕ СПАСИБО - B4rr4cuda

Насколько я понимаю, они(PaintBox и Image) - вообще рисуют на Canvas формы...
Просто я предполагал, что в PaintBox - OnPaint должно вызываться автоматически...
Зато теперь я точно знаю верный ответ. Спасибо! :cry:

Только там всё равно наверно баг, т.к. каждый раз, в OnPaint - нужно задавать: PaintBox1.Canvas.Brush.Color:=clWhite;
(а мне опять таки возможно кажется что, цвет должен задаваться только один раз, а не при каждой итерации...)
но это уже не столь важно...



.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Вопрос про PaintBox ...

Сообщение B4rr4cuda » 03.10.2012 18:30:54

vitaly_l писал(а):Только там всё равно наверно баг, т.к. каждый раз, в OnPaint - нужно задавать: PaintBox1.Canvas.Brush.Color:=clWhite;

Это не баг. Система отрисовки связанная с OnPaint предполагает, что при каждом Invalidate вызове сработает событие OnPaint и контрол отрисует свое содержимое. Если собираетесь рисовать и не хотите делать это вручную - есть смысл отрисовывать на канве изображения TBitMap например.. а его уже отрисовывать в событии OnPaint паинтбокса..
Так проще будет.. изображение уже есть, только надо его показать..
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

Re: Вопрос про PaintBox ...

Сообщение vitaly_l » 03.10.2012 23:27:03

B4rr4cuda писал(а):есть смысл отрисовывать на канве изображения TBitMap например.. а его уже отрисовывать в событии OnPaint паинтбокса..


Получится совсем как Render в DX... :cry:
Но зачем тогда компоненты? :roll: (этот вопрос, мысли вслух и не требует ответа)
:!: :arrow: Спасибо - добрый B4rr4cuda !!!



.


.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Вопрос про PaintBox ...

Сообщение B4rr4cuda » 04.10.2012 22:00:32

vitaly_l писал(а):Но зачем тогда компоненты? (этот вопрос, мысли вслух и не требует ответа)

Как ни странно, отвечу - они удобны для индикации. Если у какого-то обьекта, есть свойство, показывающее его состояние.. то наиболее удобным и правильным путем гуишного мониторинга его состояния является именно отрисовка в ОнПаинт шейпа.

И я не добрый, я суровый, но справедливый (с)
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35


Вернуться в Lazarus

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

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

Рейтинг@Mail.ru