Конференция "KOL" » Canvas [Delphi, Windows]
 
  • Инна (30.10.09 10:35) [0]
    создается для контролов и картинок всегда или только если есть обращение к нему в коде?
  • mdw © (30.10.09 11:41) [1]
    А исходников у Вас нет?

    При обращении.
  • Инна (30.10.09 11:45) [2]
    нафига рыца в исходниках когда можно спросить конкретно у кто знает ?
  • miek (30.10.09 12:02) [3]
    Канва - это обертка для HDC. Создается только для контролов, у которых есть свое окно. Подробнее нужно смотреть в коде контрола. В VCL практикуется стиль lazy allocation, т.е. при обращении.
  • Инна (30.10.09 12:10) [4]
    а вот например в онпаинт передается DC , если его использовать канва создасца и тут вобще по другому ?
  • Инна (30.10.09 12:16) [5]
    не хочу чтоб всякие обертки для GDI создавались вообще, что для етого нужно\ненужно делать ?
  • Инна (30.10.09 12:54) [6]
    проверила
    создается при онпаинт и кустомдраве
    как понимаю , чтоб от него отвязаться нужно делать свою обработку в онмесаже, правильно ?
  • mdw © (30.10.09 13:52) [7]

    > создается при онпаинт и кустомдраве


    А внимательно смотрели? Не создается.
  • Инна (30.10.09 14:07) [8]
    а чего и куда смотреть ?
    брекпоинт ставиш на newcanvas и все
    пока у меня онпаинт и кустомдрав использовался ,брекпоинт срабатывал
  • Инна (30.10.09 14:10) [9]
    ну мошт  онпаинт не создает, а кустомдрав полюбому
  • Инна (30.10.09 14:14) [10]
    кстати к чему я все это
    при выводе через канвас, используя Lineto и moveto у меня нагрузка на проц в 2-3 раза выше чем с чистым GDI
  • mdw © (30.10.09 14:25) [11]

    > кустомдрав

    Это LVCustomDraw? Попробуйте убрать строчку Sender.Canvas;. Возможно она никчему.
  • Инна (30.10.09 14:33) [12]

    > Это 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

    в где ее убрать ?
    в понедельник попробую
  • mdw © (30.10.09 14:49) [13]
    KOL.pas
    function WndProc_LVCustomDraw(..);
  • Игорь Шевченко © (30.10.09 22:25) [14]
 
Конференция "KOL" » Canvas [Delphi, Windows]
Есть новые Нет новых   [134431   +12][b:0][p:0.001]