Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.27;
Скачать: 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 вся ветка

Текущий архив: 2005.02.27;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.039 c
3-1105697007
mikel
2005-01-14 13:03
2005.02.27
Как узнать после INSERT присвоенный auto_increment ом ключ?


14-1107362868
Dell3r
2005-02-02 19:47
2005.02.27
Регистрация


1-1108332432
Megabyte
2005-02-14 01:07
2005.02.27
Как данные из выборки в БД передать в Ексель?


14-1107504081
syte_ser78
2005-02-04 11:01
2005.02.27
Ктонибуть в лиспе разбирается? (Встроеный макроязык АвтоКад)


14-1107350638
Шишкин Илья
2005-02-02 16:23
2005.02.27
NewMail





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский