Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#6

AW: ListView Header Farbe (Win32)

  Alt 17. Jan 2017, 18:38
Das Problem ist folgendes.
Ich habe ja nur ein DC das vom HeaderHandle das mit DrawHeaderItem übergeben wird.
Das bedeutet will ich den Hintergrund des Header ausmalen muss ich in Reihenfolge vorgehen.

Also erst den Hintergrund zeichnen und dann die Columns.
Delphi-Quellcode:
    if GdipCreateFromHDC(DC, Graphics) = OK then
     begin
       Img := Cardinal(GetProperty(Handle, PROP_IMAGE_SELECTED));
       GetClientRect(WinHandle, rc);
       // Hintergrund der Columns (Zeichne ich hier die Farbe anstelle des Button dann werden die Columns übermalt.)
       // bsp. FillRect.. bla. bla.
       SkinEngine.PaintButton(Graphics, 4, Img, rc.Left, rc.Top, rc.Right, rc.bottom, BS_PUSHBUTTON);
       // Columns
       SkinEngine.PaintButton(Graphics, 4, Img, rcHeader.Left, rcHeader.Top, rcHeader.Right - rcHeader.Left,
         rcHeader.bottom, BS_PUSHBUTTON);

       GdipDeleteGraphics(Graphics);
     end;
Das mache ich ja auch.

Ich kann aber nicht auf den Hintergrund selbst zeichnen dafür benötige ich ein eigenes DC für den Columns Hintergrund.
Scheint es wohl nicht zu geben.

Auch der erste Button wird von den Columns übermalt deshalb die Farbunterschiede.
Die Columns bekommen dann kräftigere Farben da sich diese durch den Hintergrund und weil sie Transparent sind duplizieren.

gruss

Geändert von EWeiss (17. Jan 2017 um 18:44 Uhr)
  Mit Zitat antworten Zitat