![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Быстро выполнение FillRect [WinXP]
Алик © (2006-03-06 18:50:00)Добрый день,
Подскажите плиз как наиболее быстро выполить процедуру FillRect, при прорисовке прямоугольника на TCanvas.
Требуется зарисовать мозаику из большого количества квадратиков на TCanvas.
Алик (2006-03-12 15:11:00) [1]А как это сделать, чтобы рисовалась только видимая часть Canvasa при передвижении рычажка ScrollBox ?
wicked (2006-03-06 21:14:00) [2]
> Где выигрываешь в другом проигрываешь и наоборот.
>
> Так что мне можно сделать????
определять, какие квадратики будет видно, и рисовать только их....
просто подозреваю, что сейчас это не так и рисуются все....
Алик (2006-03-06 21:03:00) [3]Да этот вариант хороший я рисовал Bitmap а затем копировал на Canvas на событие OnPaint. Скорость была хорошая, прорисовка совершенно не тормозила.
Но у меня возникла другя проблема, размер моего Bitmap мог доходить до десятков тысяч пиксел в длину и ширину, а если брать 8 или 16 битную палитру, то вся оперативка а следом проц уходили в глубокий нокаут на секунд 20 - 30. То есть потребляется порядка 100 мегабайт оперативки.
К тому же иногда приходится открывать несколько подобных карт одновременно.
Поэтому я отказался от Bitmapa а впоролся в скорость прорисовки моих квадратиков.
Где выигрываешь в другом проигрываешь и наоборот.
Так что мне можно сделать????
wicked (2006-03-06 20:04:00) [4]
> Можно ли тут что-нибудь сделать? Может быть как то через
> DirectDraw?
а немного подумать?.... забить "квадратиками" какой-нибудь Bitmap и выводить его скопом, когда нужно.... еще более дешевое и сердитое решение - поставить TImage вместо PaintBox-а....
Алик (2006-03-06 19:05:00) [5]Дело в том, что TCanvas у меня находится в PaintBox, а PaintBox в TScrollBox.
И когда я прокручиваю полосы прокрутки ScrollBox моя мозаика из нескольких тысячей квадратиков заметно тормозит при прорисовке методом FillRect.
Можно ли тут что-нибудь сделать? Может быть как то через DirectDraw?
MBo (2006-03-06 18:56:00) [6]FillRect выполняется быстро.