Форум: "Компоненты";
Текущий архив: 2006.11.19;
Скачать: [xml.tar.bz2];
ВнизТормозит отрисовка на Bitmap-е Найти похожие ветки
← →
AlexeyT © (2006-03-21 14:01) [0]Компонент рисует на Bitmap-е, потом выводит этот битмеп через Canvas.Draw на основную форму. Проблема в том, что отрисовка на битмепе тормозит:
1) При отрисовке большого числа строк теста через Canvas.TextOut (тормозит при числе строк от 200)
2) Особенно тормозит при раскраске фона битмепа таким кодом:procedure SelectRect(Canvas: TCanvas; const Rect: TRect);
var
X, Y: integer;
begin
with Canvas do
for X:= Rect.Left to Rect.Right-1 do
for Y:= Rect.Top to Rect.Bottom-1 do
Pixels[X, Y]:= Pixels[X, Y] xor clWhite;
end;
(тормозит при числе раскрашенных строк от 5).
Подскажите, что можно тут ускорить? Задача компонента - выводить текст с раскраской фона. Почти то же, что делает TMemo, но TMemo же не тормозит?
← →
MBo © (2006-03-21 14:09) [1]Pixels[X, Y]:= Pixels[X, Y] xor clWhite;
Зачем попиксельно делать инверсию - можно сделать одним вызовом bitblt c SRCINVERT
← →
MBo © (2006-03-21 14:10) [2]Еще проще - InvertRect
← →
AlexeyT © (2006-03-21 17:10) [3]
> MBo © (21.03.06 14:09) [1]
Со вторым пунктом ясно, сделаю через InvertRect или ScanLine.
А что делать с первым пунктом?
← →
MBo © (2006-03-21 17:16) [4]>А что делать с первым пунктом?
API-функция DrawText
← →
AlexeyT © (2006-03-21 19:02) [5]
> API-функция DrawText
Т.е. рисовать (через DrawText) придется прямо на контроле, минуя битмеп?
Я-то хотел все нарисовать прямо в битмепе, а потом битмеп выводить на канву контрола...
← →
AlexeyT © (2006-03-21 22:40) [6]А, sorry, DrawText рисует и на битмепе тоже.
Но она ничем не лучше ExtTextOut, которую использует Canvas.TextOut.
В общем, не знаю, что еще можно оптимизировать. Отрисовка ускоряется, если уменьшить размеры битмепа (сейчас он 1600*1200), но размеры должны быть достаточными для того, чтобы вместить весь экран...
Хорошо бы посмотреть пример компонента, рисующего текст на канве, без тормозов...
← →
MBo © (2006-03-22 05:49) [7]DrawText может выводить много строк сразу - вот отсюда и может быть выигрыш
← →
ЮЮ © (2006-03-22 12:54) [8]
> Почти то же, что делает TMemo, но TMemo же не тормозит?
Он рисует только видимые строки, а ты " (тормозит при числе строк от 200)"
Страницы: 1 вся ветка
Форум: "Компоненты";
Текущий архив: 2006.11.19;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.072 c