Вниз
Скачать: CL | DM;

О прорисовке на битмапе   Найти похожие ветки 

 
DmiSb   (2005-01-12 09:18) [0]

Уважаемые местера, дайте совет. Если я в отдельно процедуре рисую на битмапе текст, приходится вызывать её  какждый раз при onPaint (перерисовавыть все заново).  На медленной машине видно, как идет прорисовка, это не очень приятно. Да и в процедуре идут некоторые вычисления, что тоже подтормаживает. Может кто подскажет как это исправить ?


 
tesseract   (2005-01-12 10:50) [1]

рисуё на отдельной канве потом BitBlt


 
DmiSb   (2005-01-12 11:36) [2]

2 tesseract

Немного поясню как у меня : На ScrollBox кладу PaintBox (размер А4), затем на нем cоздаю BitMap и на нем рисую текст и пр. Если я буду рисовать на отдельной канве нужно ли для этого дополнительный BitMaр и не сильно ли это будет отедать память, все таки два больших BitMaр`а?


 
DmiSb   (2005-01-13 06:22) [3]

Чёт не получается у меня. Нашел пример рисования через BitBlt/

var
 MemDc : hdc;
 dc : hdc;
 MemBitmap : hBitmap;
 OldMemBitmap : hBitmap;

При открытии формы
 dc := GetDc(0);
 MemDc := CreateCompatibleDc(dc);
 MemBitmap := CreateCompatibleBitmap(dc, 100, 100);
 ReleaseDc(0, dc);

В процедуре рисую
 OldMemBitmap := SelectObject(MemDc, MemBitmap);
 PatBlt(MemDc, 0, 0, 100, 100, WHITENESS);
 Ellipse(MemDc, 0, 0, 100, 100);

 BitBlt(PB.Canvas.Handle, 100, 100, 100, 100,
   MemDc, 0, 0, SRCCOPY);
 SelectObject(MemDc, OldMemBitmap);

В onPaint
 BitBlt(PB.Canvas.Handle, 100, 100, 100, 100,
   MemDc, 0, 0, SRCCOPY);

Освобождаю объекты только при закрытии формы
 DeleteObject(MemBitmap);
 DeleteDc(MemDc);

Рисоваться, то рисуется, но при скроллинге размазывается.
Может у кого есть примерчик ?


 
Kerk ©   (2005-01-13 06:32) [4]

DmiSb   (13.01.05 6:22) [3]
перерисовывай при скролинге


 
DmiSb   (2005-01-13 11:03) [5]

Kerk
перерисовывай при скролинге


В этом случае не перерисовывается вообще.


 
DmiSb   (2005-01-13 11:18) [6]

Точнее сказать, он прорисовывается, но после того как отпускаешь скроллер. В время скроллирования вообще ничего нет.


 
Kerk ©   (2005-01-13 12:37) [7]

DmiSb   (13.01.05 11:18) [6]
используй ScrollBox


 
DmiSb   (2005-01-13 13:46) [8]

Дык я так и делаю. На форме лежит ScrollBox, на нем PaintBox заведомо больших чем он размеров. На него я накладываю временный рисунок. И тут возникает бяка :(
А примера нету ?


 
Kerk ©   (2005-01-13 15:03) [9]

DmiSb   (13.01.05 13:46) [8]
покажи код рисования. не тот пример. а твою реализацию



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.029 c
14-1107504610
Тульский
2005-02-04 11:10
2005.02.27
Хасавьюрт-2


3-1106992219
korvin
2005-01-29 12:50
2005.02.27
В одном запросе несколько баз ...


14-1107850844
Ozone
2005-02-08 11:20
2005.02.27
Коммутатор vs Маршрутизатор


1-1107798214
Алексей Петухов
2005-02-07 20:43
2005.02.27
Clipboard


3-1106649804
MakedoneZ
2005-01-25 13:43
2005.02.27
Вопрос про DBGrid и Table.




   Наверх