![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
стирается Canvas [D6, Win2k]
kirilllius © (2004-11-02 21:09:00)В чем проблема?
Я хочу рисовать на панели, но, как известно она не содержит Canvas. Я делаю следующее
var Pan: TControlCanvas;
begin
Pan:=TControlCanvas.Create;
Pan.Control := Panel1;
Pan.StretchDraw(…);
end;
Все работает, НО, когда я минимизирую приложение и восстанавливаю обратно, все нарисованное на панели исчезает, т.е. стирается. Подскажите, как рисовать на панели (используя Canvas) чтобы ничего никуда не исчезало?
Юрий Зотов (2004-11-03 11:53:00) [1]> Stexen (03.11.04 02:17) [3]
> нафиг использовать Canvas?? если он не Public
Вот как раз затем, чтобы не надо было получать DC. Каждый GetDC - это захват ресурсов GDI, а они совсем не бесконечны.
Stexen (2004-11-03 02:17:00) [2]ну там событие наверняка есть onPaint если у него нет то повесь на onPaint у формы перерисовку!
Вот и еще зачем нафиг использовать Canvas?? если он не Public
DC := GetDC(Panel.Handle);
получил дескриптор а там уже делай че хошь
kirilllius (2004-11-03 00:56:00) [3]Всё ясно, буду своевременно обновлять.
Юрий Зотов (2004-11-02 21:28:00) [4]У панели ЕСТЬ canvas, только он находится в секции protected. Получить к нему доступ можно так:
type
TFriendPanel = class(TPanel);
with TFriendPanel(Panel1).Canvas do
begin
...
end;
И не надо создавать никаких своих canvas'ов. А чтобы ничего никуда не исчезало, рисунок нужно своевременно обновлять (то есть, перерисовывать).