-
создается для контролов и картинок всегда или только если есть обращение к нему в коде?
-
А исходников у Вас нет?
При обращении.
-
нафига рыца в исходниках когда можно спросить конкретно у кто знает ?
-
Канва - это обертка для HDC. Создается только для контролов, у которых есть свое окно. Подробнее нужно смотреть в коде контрола. В VCL практикуется стиль lazy allocation, т.е. при обращении.
-
а вот например в онпаинт передается DC , если его использовать канва создасца и тут вобще по другому ?
-
не хочу чтоб всякие обертки для GDI создавались вообще, что для етого нужно\ненужно делать ?
-
проверила
создается при онпаинт и кустомдраве
как понимаю , чтоб от него отвязаться нужно делать свою обработку в онмесаже, правильно ?
-
> создается при онпаинт и кустомдраве
А внимательно смотрели? Не создается.
-
а чего и куда смотреть ?
брекпоинт ставиш на newcanvas и все
пока у меня онпаинт и кустомдрав использовался ,брекпоинт срабатывал
-
ну мошт онпаинт не создает, а кустомдрав полюбому
-
кстати к чему я все это
при выводе через канвас, используя Lineto и moveto у меня нагрузка на проц в 2-3 раза выше чем с чистым GDI
-
> кустомдрав
Это LVCustomDraw? Попробуйте убрать строчку Sender.Canvas;. Возможно она никчему.
-
> Это LVCustomDraw
да
function TForm1.MusicLVCustomDraw(Sender: PControl; DC: HDC;
Stage: Cardinal; ItemIdx, SubItemIdx: Integer; const Rect: TRect;
ItemState: TDrawState; var TextColor, BackColor: Integer): Cardinal;
begin
if (Stage<>CDDS_PREPAINT)and(Stage<>CDDS_ITEMPREPAINT) then begin
if qqq(DYN.list.ItemS[ItemIdx]^).Group then BackColor:=$00FCF4ED;
if qqq(DYN.list.ItemS[ItemIdx]^).Mask and 8 <> 0 then TextColor:=$00AD5A5A;
if qqq(DYN.list.ItemS[ItemIdx]^).Mask and 16 <> 0 then TextColor:=$004848E3;
if qqq(DYN.list.ItemS[ItemIdx]^).Mask and 4 <> 0 then TextColor:=clGreen;
end ;
result:=CDRF_NOTIFYITEMDRAW;
end;
> Попробуйте убрать строчку Sender.Canvas
в где ее убрать ?
в понедельник попробую
-
KOL.pas
function WndProc_LVCustomDraw(..);
-