Einzelnen Beitrag anzeigen

neo4a

Registriert seit: 22. Jan 2007
Ort: Ingolstadt
362 Beiträge
 
Delphi XE2 Architect
 
#6

AW: Benötige Icons bis 255x255 aus RES-Datei

  Alt 17. Mär 2012, 07:55
Es ist so, daß ich durchsichtige (transparente) Bildchen benötige,
da ihr Ausschnitt keine rechteckigen Ränder zuläßt.

Im PNG Format benötige ich zusätzliche Fremd-Komponenten wie Graph64,
etc.
PngImagelist ist trotzdem einen 2. Blick wert, da diese kleine Lib u.a. direkt als ImageList-Ersatz verwendet werden kann. Die Qualität der Darstellung/ des Zeichnens ist augenscheinlich besser als die der Standard-Komponente, weil sie besser mit der Semitranzparenz umgeht (Du kennst sicher die "Ausfransungen" an den Grafik-Rändern?). Die Lib ist Open Source, hat gerade 4 Komponenten und unterstützt alle relevanten Delphi-Versionen. Geradezu ideal für solche Einsatzfälle wie in Deinem Screenshot zu sehen.

Meine Frage, gibt es einen Trick, ICOs aus einer Delphi-RES Datei
zu laden, die dann auch in Größe größer 32x32 Pixeln angezeigt werden
können. In der RES Datei sind sie nämlich größer als besagte 32x32.
Du kannst die ICO ja auch als RCData oder BIN in Deiner .rc-Datei speichern:
Code:
Icon01 BIN "Icon1.ico"
und in Delphi entsprechend abrufen:
Delphi-Quellcode:
  
const
  cName = "Icon01";
var
  aIcon : TIcon;
  aResStream : TResourceStream;
begin
  aResStream := TResourceStream.Create(HInstance, cName, 'BIN');
  try
    aIcon := TIcon.Create;
    try
      aIcon.LoadFromStream(aResStream);
    finally
      aIcon.Free;
    end;
  finally
    aResStream.Free;
  end;
Nicht viel anders so sieht das Ganze bei Verwendung der Png-Lib aus:
Code:
Icon01 PNG "Icon1.png"
Delphi-Quellcode:
  
const
  cName = "Icon01";
var
  aPng : TPngImage;
  aResStream : TResourceStream;
begin
  aResStream := TResourceStream.Create(HInstance, cName, 'PNG');
  try
    aPng := TPngImage.Create;
    try
      aPng.LoadFromStream(aResStream);
      DrawPNG(aPng, aCanvas, aCanvas.ClipRect, []);
    finally
      aPng .Free;
    end;
  finally
    aResStream.Free;
  end;
Andreas
  Mit Zitat antworten Zitat