Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Transparenzproblem bei Manipulation eines Icons... (https://www.delphipraxis.net/14144-transparenzproblem-bei-manipulation-eines-icons.html)

FriFra 3. Jan 2004 09:55


Transparenzproblem bei Manipulation eines Icons...
 
Ich habe ein kleines Problem mit dem Ändern eines Icons. Das merkwürdige an der Sache ist, dass es auf einem Rechner läuft und auf dem anderen nicht...
http://www.frifra.de/Temp/buggyicon.JPG


Delphi-Quellcode:
procedure TXBuddy_Main.WriteReading(IsReading: Boolean);
var
  StartX, StartY: integer;
  id, n, x, y: integer;
  IsLarger: boolean;
  Bmp: TBitmap;
  ImageList: TImageList;
  TrColor: TColor;
begin
  if IsReading = True then
  begin
    TNA_IconTmp.Assign(TNA_Icon);
    try
      Bmp := TBitmap.Create;
      Bmp.Height := 16;
      Bmp.Width := 16;
      { Hintergrundfarbe }
      Bmp.Canvas.Brush.Color := clFuchsia;
      Bmp.Canvas.FloodFill(0, 0, clFuchsia, fsBorder);

      Bmp.Canvas.Draw(0, 0, TNA_Icon);

      Bmp.Canvas.Pixels[2, 2] := clMaroon;
      Bmp.Canvas.Pixels[2, 3] := clRed;
      Bmp.Canvas.Pixels[2, 4] := clRed;
      Bmp.Canvas.Pixels[2, 5] := clMaroon;
      Bmp.Canvas.Pixels[3, 2] := clRed;
      Bmp.Canvas.Pixels[3, 3] := clRed;
      Bmp.Canvas.Pixels[3, 4] := clRed;
      Bmp.Canvas.Pixels[3, 5] := clRed;
      Bmp.Canvas.Pixels[4, 2] := clRed;
      Bmp.Canvas.Pixels[4, 3] := clRed;
      Bmp.Canvas.Pixels[4, 4] := clRed;
      Bmp.Canvas.Pixels[4, 5] := clRed;
      Bmp.Canvas.Pixels[5, 2] := clMaroon;
      Bmp.Canvas.Pixels[5, 3] := clRed;
      Bmp.Canvas.Pixels[5, 4] := clRed;
      Bmp.Canvas.Pixels[5, 5] := clMaroon;

      ImageList := TImageList.CreateSize(16, 16);
      try
        ImageList.AddMasked(Bmp, clFuchsia);
        ImageList.GetIcon(0, TNA_Icon);
      finally
        ImageList.Free;
      end;
    finally
      Bmp.Free;
    end;
  end
  else
    TNA_Icon.Assign(TNA_IconTmp);
end;

MrKnogge 3. Jan 2004 10:18

Re: Transparenzproblem bei Manipulation eines Icons...
 
liegt vielleicht an der Grafikkarte, stell
die exe-file doch mal zum Download frei,
dann kanns n anderer mit xp-pro testen.

FriFra 3. Jan 2004 13:26

Re: Transparenzproblem bei Manipulation eines Icons...
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hier ist mal ein Beispiel...

mirage228 3. Jan 2004 13:38

Re: Transparenzproblem bei Manipulation eines Icons...
 
Läuft ohne visuelle Makel.

(Windows XP Professional SP1, 32bit, nVidia GeForce 4 Ti4400 mit Forceware 53.03)

mfG
mirage228

FriFra 3. Jan 2004 13:45

Re: Transparenzproblem bei Manipulation eines Icons...
 
Liste der Anhänge anzeigen (Anzahl: 1)
Unter XP pro mit einer Mobile Radeon läuft es nicht richtig...

Chris1986 3. Jan 2004 14:06

Re: Transparenzproblem bei Manipulation eines Icons...
 
Zitat:

Zitat von FriFra
Unter XP pro mit einer Mobile Radeon läuft es nicht richtig...

Mit meiner ATI Radeon 9800xl gehts auch nicht richtig. (gleicher Fehler wie bei FriFra)

MfG
Christian

FriFra 3. Jan 2004 15:02

Re: Transparenzproblem bei Manipulation eines Icons...
 
Liste der Anhänge anzeigen (Anzahl: 1)
Das Icon selbst scheint in Ordnung zu sein... ich habe jetzt mal folgenden Code am Ende der eingebaut:
Delphi-Quellcode:
  MS := TMemoryStream.Create;
  Image1.Picture.Icon.SaveToStream(MS);
  MS.Position := 0;
  Image1.Picture.Icon.LoadFromStream(MS);
  MS.Free;
Allerdings scheint Delphi nur eine 16-Farb Version in den Stream zu speichern, obwohl es ein 32-Bit Icon ist :(

FriFra 3. Jan 2004 15:29

Re: Transparenzproblem bei Manipulation eines Icons...
 
Ich habs jetzt auch mal über eine Componenten-Resource probiert... auch dabei kommt dann eine 16-Farb Version des korrekt geänderten Icons raus. Kann Delphi Icons denn nicht in ihrer korrekten Auflösung speichern?

Delphi-Quellcode:
WriteComponentResFile('test.bin',Image1);
ReadComponentResFile('test.bin', Image1);

FriFra 13. Jan 2004 08:45

Re: Transparenzproblem bei Manipulation eines Icons...
 
Ich habe es jetzt gelöst...

Ich zeichne nun meine Änderungen in ein neues komplett transparantes Icon und lege dieses Icon über das vorhandene:
http://www.swissdelphicenter.ch/de/showcode.php?id=1636

Danach wird das Icon auf allen Systemen korrekt angezeigt ;)

Testprogramm: http://www.frifra.de/download/online/XBuddy.zip (nur für XBox-Live User geeignet!)


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:13 Uhr.

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