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