Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Transparenz in TImage mit WinXP SP2 versagt ? (https://www.delphipraxis.net/29743-transparenz-timage-mit-winxp-sp2-versagt.html)

DerAndereMicha 14. Sep 2004 08:45


Transparenz in TImage mit WinXP SP2 versagt ?
 
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.

DerAndereMicha 14. Sep 2004 09:41

Re: Transparenz in TImage mit WinXP SP2 versagt ?
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hier noch zwei Screenshots. Einmal unter XP SP1 und einmal unter XP SP2.

Das Bitmap wird über ne Imagelist mit Hilfe von

Delphi-Quellcode:
ImageList1.GetBitmap(0,image1.picture.bitmap);
in das Image geladen.

gothic_mike 14. Sep 2004 10:13

Re: Transparenz in TImage mit WinXP SP2 versagt ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

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;

himitsu 14. Sep 2004 10:16

Re: Transparenz in TImage mit WinXP SP2 versagt ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hast du dein Proggi auch schon mal mit anderen Delphi Versionen compiliert und es damit getestet?

DerAndereMicha 14. Sep 2004 12:30

Re: Transparenz in TImage mit WinXP SP2 versagt ?
 
Habs auch schon mit Delphi 7 probiert - selbes Ergebnis.

Und Bilder zur Laufzeit mittels

Delphi-Quellcode:
bmp.LoadFromFile('X:\images\glyFXfree\delete24_h.bmp');
in die ImageList zu laden kommt bei mir nicht in Frage... Sorry. Aber danke
für den Vorschlag.

gothic_mike 14. Sep 2004 23:18

Re: Transparenz in TImage mit WinXP SP2 versagt ?
 
Zitat:

Zitat von DerAndereMicha
Habs auch schon mit Delphi 7 probiert - selbes Ergebnis.

Und Bilder zur Laufzeit mittels

Delphi-Quellcode:
bmp.LoadFromFile('X:\images\glyFXfree\delete24_h.bmp');
in die ImageList zu laden kommt bei mir nicht in Frage... Sorry. Aber danke
für den Vorschlag.

Ich bin gerade dabei wie ein irrer im netz nach einer lösung zu suchen, da ich selbiges problem auch habe.
hätte noch einen anderen Vorschlag, nimm doch statt aus der ImageList die Bilder aus einer Resourcendatei...

himitsu 15. Sep 2004 00:01

Re: Transparenz in TImage mit WinXP SP2 versagt ?
 
Also wenn dieser Code daoben wirklich funktioniert, dann einfach bei Programmstart die Bilder der ImageList in eine temporäre ImageList kopieren, die ImageList mit dem Code auf 32 Bit umstellen, dann die Bilder wieder von der Temporären ist die umgebaute ImageList eifügen und schon sollte es auch gehn, oder eben die Resourcen verwenden -.-

Dani 26. Sep 2004 18:26

Re: Transparenz in TImage mit WinXP SP2 versagt ?
 
Hi!

Hat sich hier irgendwas ergeben? Habe gerade dasselbe Problem: Die Transparenz der ImageList funktioniert mit 32x32 Bitmaps, aus einer Ressource geladen, nicht :(

vsandre 26. Sep 2004 18:32

Re: Transparenz in TImage mit WinXP SP2 versagt ?
 
Probiert einfach mal dieses aus.
Delphi-Quellcode:
MeineImagelist.Masked := false;
Der Standardwert bei Delphi ist nämlich auf true gesetzt.

ciao

Edit:
1. Ich meien bevor die Bilder in die ImageList geladen werden.
2. In der IDE könnt ihr das natürlich auch schon einstellen.

Dani 26. Sep 2004 18:35

Re: Transparenz in TImage mit WinXP SP2 versagt ?
 
Hmm, das ändert leider auch nichts.
Edit: Auch nicht wenn ich es in der IDE ändere.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:25 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz