![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
![]() При изменении размера компонента TPaintBox его изображение удаляется, поэтому нужно его перерисовывать снова. При изменении размера формы её изображение не удаляется. Можно ли в TPaintBox отключить удаление изображения при изменении размера?
|
#2
|
||||
|
||||
![]() TPaintBox всего лишь предоставляет контекст для рисования, поэтому изображение на нем может "удаляться". Единственно верным вариантом его использования является рисование изображения в событии OnPaint. В отличии от него, TImage "умеет" хранить нарисованное на нем изображение в своем объекте Picture, которое в нужным момент сам перерисует. Плата за такое "удобство" - быстродействие.
Пишу программы за еду. __________________ |
#3
|
||||
|
||||
![]() А форма не предоставляет "всего лишь контекст для рисования"? На форме, при изменении размера, изображение не удаляется и она не имеет объект Picture. Вот, что нашёл в модуле Vcl.ExtCtrls:
Код:
procedure TPaintBox.Paint; begin Canvas.Font := Font; Canvas.Brush.Color := Color; if csDesigning in ComponentState then with Canvas do begin Pen.Style := psDash; Brush.Style := bsClear; Rectangle(0, 0, Width, Height); end; if Assigned(FOnPaint) then FOnPaint(Self); end; |
#4
|
||||
|
||||
![]() Форма также не сохраняет изображение.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#5
|
||||
|
||||
![]() Цитата:
Пишу программы за еду. __________________ |
#6
|
||||
|
||||
![]() Проще сказать, Винде по фигу, что имеется на холсте. Задача программиста обновлять холст и следить за его содержанием.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#7
|
||||
|
||||
![]() angvelem,
1. в Delphi XE7, нарисованное на форме изображение, после изменения размера формы, не удаляется. 2. задача кода - не удалять изображение программиста. NumLock, изображение есть в Canvas.Pixels. |
#8
|
||||
|
||||
![]() Цитата:
И не важно какая версия Дельфи. Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#9
|
||||
|
||||
![]() Если нужно чтобы изображение не терялось, храни его, к примеру, в битмапе, а процедуре OnPaint TPaintBox-а выводи его.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#10
|
||||
|
||||
![]() Цитата:
Цитата:
Последний раз редактировалось SpectraL, 08.05.2015 в 10:14. |
#11
|
|||
|
|||
![]() Цитата:
Для начала Form.DoubleBuffered:=True; |
#12
|
||||
|
||||
![]() Цитата:
Пишу программы за еду. __________________ |
#13
|
||||
|
||||
![]() Цитата:
Цитата:
|
#14
|
||||
|
||||
![]() увеличиваем размер окна, согласись это и есть изменение размеров окна, что должно быть нарисовано во вновь появившейся области? правильно, а фиг его знает) пока сам не нарисуешь там.
так что все работает правильно, неправильно работает программист ![]() Пишу программы за еду. __________________ |
#15
|
||||
|
||||
![]() Цитата:
![]() Последний раз редактировалось SpectraL, 08.05.2015 в 12:14. |