Конференция "KOL" » DwmExtendFrameIntoClientArea и корректный вывод PBitmap
 
  • ParanoiS © (02.03.15 20:45) [0]
    Доброго времени суток! Пытаюсь вывести GRushControl на стекло, но почему-то транспарентные области рисуются черным. Как сие победить?

    Вот сырье OnPaint:

    procedure TMainForm.btnAppMenuPaint(Sender: PControl; DC: HDC);
    var
     pb:HPAINTBUFFER;
     nDC:HDC;
     pp:TBPPaintParams;
     R:TRect;
    begin
     if GlassFrame then begin
     // свойство, true если DwmExtendFrameIntoClientArea успешно
       ZeroMemory(@pp, sizeof(pp));
       pp.cbSize := sizeof(pp);
       R:=Sender.ClientRect;
       pb:=BeginBufferedPaint(dc,R,BPBF_COMPOSITED,nil,nDC);
       if pb=0 then PGRushControl(Sender).DoPaint(Sender,DC) else begin
         PGRushControl(Sender).DoPaint(Sender,nDC);
         BufferedPaintSetAlpha(pb,@R,255);
         EndBufferedPaint(pb,true);
       end;
     end else PGRushControl(Sender).DoPaint(Sender,DC);
    end;

    В KOLGRushControls.pas сделано
       public
           procedure DoPaint (Ctl_: PControl; DC: HDC);

    Скрин проблемы:
    https://yadi.sk/i/GDJUzKFmeymoQ
  • ParanoiS © (03.03.15 20:12) [1]
    на скрине кстати видно, что btnAppMenu имеет черную область, а кнопка рядом (btnRibbonQuick[i]) - цвет DEF_ColorOuter.. Все свойства у них одинаковые, т.к. создаются динамически одним кодом..
 
Конференция "KOL" » DwmExtendFrameIntoClientArea и корректный вывод PBitmap
Есть новые Нет новых   [134427   +35][b:0][p:0]