Вниз
Скачать: 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.024 c
1-1108447358
ТехникПТО
2005-02-15 09:02
2005.02.27
Продолжите плиз...


3-1106887604
guest_Dmitry
2005-01-28 07:46
2005.02.27
Проблема с FIBPlus


1-1108363229
Piero
2005-02-14 09:40
2005.02.27
_isres32.dll


14-1107887756
sloug
2005-02-08 21:35
2005.02.27
Работа


1-1108037175
D2k5
2005-02-10 15:06
2005.02.27
Установка компонентов в Delphi 2005




   Наверх