Zitat von
DerAndereMicha:
Mir ist aufgefallen, daß in Anwendungen in welchen TImages mit Transparenz dargestellt
werden, seit SP2 in WinXP die Transparenz nicht mehr transparent ist. Hat jemand von Euch
ne Ahnung an was das liegt. Unter Win2003 Server ist es auch so. Programme sind mit
Delphi 5 compiliert.
Selbiges problem tritt auch mit Delphi 7 Personal unter XP auf, liegt nicht an TImage sondern an TImageList.
ich habe das mit folgendem Code (irgendwo mal im Netz gefunden) hinbekommen, allerdings müssen dann die Bilder erst zur laufzeit in die Imagelist geladen werden!
Delphi-Quellcode:
uses Consts, CommCtrl;
Procedure ConvertTo32BitImageList(Const ImageList: TImageList);
Const
Mask: Array[Boolean] Of Longint = (0, ILC_MASK);
Var
TemporyImageList: TImageList;
Begin
If Assigned(ImageList) Then
Begin
TemporyImageList := TImageList.Create(Nil);
Try
TemporyImageList.Assign(ImageList);
With ImageList Do
Begin
ImageList.Handle := ImageList_Create(Width, Height, ILC_COLOR32 Or Mask[Masked], 0, AllocBy);
If Not ImageList.HandleAllocated Then
Begin
Raise EInvalidOperation.Create(SInvalidImageList);
End;
End;
ImageList.AddImages(TemporyImageList);
Finally
TemporyImageList.Free;
End;
End;
End;
procedure TForm1.Button1Click(Sender: TObject);
var
bmp: TBitmap;
begin
ConvertTo32BitImageList(ImageList1);
ImageList1.Clear;
bmp := TBitmap.Create;
try
bmp.LoadFromFile('X:\images\glyFXfree\delete24_h.bmp');
ImageList1.Add(bmp, bmp);
finally
bmp.Free;
end;
ImageList1.GetBitmap(0,image1.picture.bitmap);
ImageList1.GetBitmap(0,image2.picture.bitmap);
end;