Forum: Object-Pascal / Delphi-Language
Delphi
by Martin K,
1. Sep 2006
Jaja, das leigt denke ich mal an der Umwandlung Icon -> Bitmap.
Kann es in Deinem Fall denn nicht eine ToolBar mit ToolButtons sein?
Hier kannst Du mit einer ImageList arbeiten und das Icons kann direkt als Icons eingefügt werden.
Da dürfte so ein Problem nicht auftauchen.
Zu dem eigentlichen Problem:
Habe mir gerade mit einem Trick beholfen - nicht die sauberste Lösung, aber es...
Forum: Object-Pascal / Delphi-Language
Delphi
by Martin K,
31. Aug 2006
Ja, ich:
procedure TForm1.Button1Click(Sender: TObject);
var
ICO: TIcon;
SHFileInfo: TSHFileInfo;
begin
ICO := TIcon.Create;
try
FillChar(SHFileInfo, SizeOf(SHFileInfo), #0);
Forum: Object-Pascal / Delphi-Language
Delphi
by Martin K,
31. Aug 2006
Auch hierfür gibt es eine Lösung:
Das Bitmap verwendet das untere linke Pixel als transparente Farbe.
Bei einer Verknüpfung ist dieses Pixel schwarz, somit wird der schwarze Verknüpfungs-Pfeil transparent.
Durch die Zeile
SpeedButton1.Glyph.TransparentColor := clNone;
sollte das Problem allerdings behoben sein.
procedure TForm1.Button1Click(Sender: TObject);
var
Forum: Object-Pascal / Delphi-Language
Delphi
by Martin K,
31. Aug 2006
Ich glaub jetzt habe ich die Lösung:
Das mit der "miesen Bildqualität" liegt wohl am Alpha-Kanal der 32 Bit-Icons - das von dem alten Icon noch Reste übrig waren wenn ein neues drübergemalt wurde, liegt an der Transparenz der Icons.
Da ein leeres Bitmap immer weiß ist, bleiben die Stellen wo eine Halbtransparenz beim Alpha-Kanal des Icons ist, beim Bitmap weiß.
Lösung:
Einfach das Bitmap...
Forum: Object-Pascal / Delphi-Language
Delphi
by Martin K,
30. Aug 2006
Sorry, stimmt ja...
Weil SpeedButton1 ein Objekt ist und keine Variable.
Aber mit:
SpeedButton1.Glyph.Free;
sollte es klappen.
Aber wie gesagt, viel Sinn macht das nicht, da der SpeedButton und somit auch Glyph zusammen mit der Form freigegeben wird.
Forum: Object-Pascal / Delphi-Language
Delphi
by Martin K,
30. Aug 2006
Der Glyph eines SpeedButtons ist auch ein Bitmap.
Durch die Funktion Canvas.Draw kann allerdings jede beliebige Graphik auf den Glyph, also das Bitmap, gemalt werden - dies kann ein Icon, Bitmap, JPEG-Bild oder was auch immer sein.
Dadurch wird auch die Zuweisung SpeedButton1.Glyph := nil; überflüssig, da das Bitmap mit Canvas.Draw komplett übermalt wird. Ein Überlappen kann nicht entstehen, da...
Forum: Object-Pascal / Delphi-Language
Delphi
by Martin K,
29. Aug 2006
So, hab mal fix was gebastelt :coder:
Ist es das, was Du suchst?
procedure TForm1.Button1Click(Sender: TObject);
var
ICO: TIcon;
Large, Small: HIcon;
begin
Forum: Object-Pascal / Delphi-Language
Delphi
by Martin K,
29. Aug 2006
Du setzt die Größe des Bitmaps auf die Größe des Icons, obwohl das Icon noch leer ist.
Versuche mal:
TmpBMP := TBitmap.Create;
TmpIcon := Icon.Create;
try
TmpIcon.Handle := ImageHandle; //erst zuweisen
TmpBMP.Width := Icon.Width; //dann die Größe anpassen
TmpBMP.Height := Icon.Height;