![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Надо ли очищать Canvas [D5, WinXP]
anbezr © (2003-02-07 18:26:00)Привет!
может быть вопрос глупый, но...
я неоднократно (про каждом WM_PAINT) затираю Canvas:
R := ClientRect;
Brush.Color := clBtnFace;
Brush.Style := bsSolid;
Pen.Color := clBtnFase;
Rectangle(R);
и тут я вспомнил про метод, который позволяет сохранить Canvas как метафайл, т.е. все мои перетирания хранились как боксы в памяти?
Style (2003-02-07 21:20:00) [1]А канву затирать не желательно. GUI и без того достаточно тормозит. Если ты например рисуешь линию, то запоминай ее старые координаты и затирай именно линию а не всю канву, если рисуешь Текст опять же запоминай координаты и рисуй текст фоновым цветом чтобы его предварительно стереть. Так же можно поступать и с TBitmap и т.д. Неудобно но практично!
А вообще есть такие интересные компоненты Delphi DirectX поищи их а именно TDXPaintBox, TDIB, у них есть тоже Canvas но рисуеться он раз в 20 быстрее и кроме того не трубуеться установки самого DirectX эти 2 компонента не используют его самого и соответственно работают на всех платформах 95,9x,NT,2000,XP..
Удачи!
Юрий Зотов (2003-02-07 21:02:00) [2]Canvas - это объект Delphi, инкапсулирующий контекст устройства (DC), объекты GDI (Pen, Font, Brush) и методы рисования этими объектами на этом DC.
anbezr (2003-02-07 18:43:00) [3]просто из любопытства - а что тогда.
Юрий Федоров (2003-02-07 18:40:00) [4]Ничего не хранится.
Можно не затирать, если в ответ на
WM_ERASEBKGND вернуть 0 (или не 0, точно не помню - посмотри по F1)
MBo (2003-02-07 18:39:00) [5]1) Не сохраняется
2) Ни то, ни другое.
anbezr (2003-02-07 18:37:00) [6]Вопрос в следующем: сохраняется ли каждый Rectangle в памяти при каждом вызове метода Paint, или же в памяти сохраняется только результат последнего Paint"а. другими словами - Canvas - это метафайл или Bitmap?
MBo (2003-02-07 18:28:00) [7]вопрос неясен