hab mir mal meine quellen von TBitBn angeschaut...dabei ist mir aufgefallen, dass das Glyphbitmap vor dem Zeichnen nach TButtonGlyph gecasted wird (warum auch immer).
auffällig ist, dass in dessen constructor die transparentcolor (clOlive) gesetzt wird, jedoch nirgends anders geändert wird (auch nicht im OnChanged).
mein folgender Test mit deinem Code hat den Papierkorb transparent gemalt...nicht schön, aber hab keine Möglichkeit mit weniger code gefunden.
Delphi-Quellcode:
with Bitmap do
begin
Height := Icon.Height;
Width := Icon.Width;
canvas.Brush.Color:=clOlive; //neue Transparentfarbe an TButtonGlyph anpassen
canvas.FillRect(rect(0,0,width,height));
TransparentColor := canvas.Brush.Color;
Transparent := true;
Canvas.Draw(0, 0, Icon);
end;
bevor es noch jemand probiert...folgendes funtioniert nicht:
Delphi-Quellcode:
Button.Glyph.Assign(Bitmap);
button.Glyph.TransparentColor:=button.Glyph.Canvas.Pixels[0,0];
button.Glyph.Transparent:=true;
ist übrigends bei TSpeedbutton der gleiche Mist...
HTH Frank