![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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
|
||||
|
||||
|
Форма также не сохраняет изображение.
|
|
#5
|
||||
|
||||
|
Цитата:
|
|
#6
|
||||
|
||||
|
Проще сказать, Винде по фигу, что имеется на холсте. Задача программиста обновлять холст и следить за его содержанием.
|
|
#7
|
||||
|
||||
|
angvelem,
1. в Delphi XE7, нарисованное на форме изображение, после изменения размера формы, не удаляется. 2. задача кода - не удалять изображение программиста. NumLock, изображение есть в Canvas.Pixels. |