![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
DoubleBuffer...
X-RayMan © (2003-06-12 15:02:00)
Рисую на канве панели. Когда рисую куб, т.е. 8 вершин и 12 граней, то все нормально. А когда рисую сферу 482 вершины и 960 граней заметно некоторое мограние. Насколько я знаю для устранения этого надо использовать двойную буферизацию. Может кто в двух словах об этом расскажет? Заранее благодарен.
Anatoly Podgoretsky (2003-06-14 12:49:00) [1]
А вот чего смущает, так это зачем рисовать невидимые линии.
Anatoly Podgoretsky (2003-06-14 12:48:00) [2]
Да какие возражения, это одно и тоже, битмап и копирование.
Asteroid (2003-06-14 12:42:00) [3]
> Anatoly Podgoretsky © (14.06.03 12:37)
Я так понял очень хочется использовать "функции низкого уровня".
Asteroid (2003-06-14 12:41:00) [4]
Тогда:
DC := GetDC( Panel1.Handle );
MemDC := CreateCompatibleDC( DC );
MemBM := CreateCompatibleBitmap( DC, Panel1.Width, Panel1.Height );
SelectObject( MemDC, MemBM );
.
. // (операции с MemDC);
.
BitBlt( DC, 0, 0, Panel1.Width, Panel1.Height, MemDC, 0, 0, SRCCOPY );
Anatoly Podgoretsky (2003-06-14 12:37:00) [5]
Ну так рисуй его сначала на битмапе, а потом копируй на канву
X-RayMan (2003-06-14 12:29:00) [6]Это конечно хорошо, но если я использую функции низкого уровня?
Типа:
var
DC: hDC;
( Panel1.Handle,Image) [2]Это конечно хорошо, но если я использую функции низкого уровня?
Типа:
var
DC: hDC;
Image: TPaintStruct;
...
DC:=BeginPaint(Panel1.Handle,Image);
...
MoveToEx(DC,0,0,nil);
LineTo(DC,300,300);
...
Asteroid (2003-06-12 15:52:00) [7]
Panel1.DoubleBuffered := true;
В два слова никак не умещается, только в три.