AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Funktion: Graphic anhand des Namens aus Res erstellen
Thema durchsuchen
Ansicht
Themen-Optionen

Funktion: Graphic anhand des Namens aus Res erstellen

Ein Thema von whiteF · begonnen am 16. Feb 2016 · letzter Beitrag vom 17. Feb 2016
 
whiteF

Registriert seit: 14. Okt 2008
45 Beiträge
 
#1

Funktion: Graphic anhand des Namens aus Res erstellen

  Alt 16. Feb 2016, 20:31
Hallo,
ich wollte aus meiner Resource eine Grafik in ein TImage laden.

Gif, Png, bmp, jpg, klappt alles in einer seperaten procedure.

nun wollte ich mir eine funktion basteln, die mit einem befehl automatisch ein bildtyp in der ressource erkennt und das daraus resultierende ergebnis per graphic dem TImage übergeben.

Leider klappt dies nicht wirklich.
Ich poste euch mal mein Code.
Vlt. hat jemand zeit und findet mein Fehler.

Vielen Dank schonmal im voraus!

Res-Datei:
Delphi-Quellcode:
bild_bmp BITMAP "bmp.bmp"
bild_jpg RCDATA "jpg.jpg"
bild_png RCDATA "png.png"
bild_gif RCDATA "gif.gif"
Form1 auszugsweise:
Delphi-Quellcode:
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls, JPEG, PNGImage, GIFImg;

...

function GetGraphicFromResource(Name: String): TGraphic;
var
  RS: TResourceStream;
  ImageBMP : TBitmap;
  ImageJPG : TJPEGImage;
  ImagePNG : TPNGImage;
  ImageGif : TGIFImage;
  FileExtension : String;
  Graphic : TGraphic;
begin
  FileExtension := LowerCase(Copy(Name, Length(Name)-2, 3));

  Graphic := TGraphic.Create;
  Graphic := nil;

  RS := TResourceStream.Create(hInstance, Name, RT_RCDATA);
  try

    if FileExtension = LowerCase('bmp') then
    begin
      ImageBMP := TBitmap.Create;
      try
        ImageBMP.LoadFromStream(RS);
        Graphic := ImageBMP;
      finally
        ImageBMP.Free;
      end;
    end;

    if FileExtension = LowerCase('jpg') then
    begin
      ImageJPG := TJPEGImage.Create;
      try
        ImageJPG.LoadFromStream(RS);
        Graphic := ImageJPG;
      finally
        ImageJPG.Free;
      end;
    end;

    if FileExtension = LowerCase('jpeg') then
    begin
      ImageJPG := TJPEGImage.Create;
      try
        ImageJPG.LoadFromStream(RS);
        Graphic := ImageJPG;
      finally
        ImageJPG.Free;
      end;
    end;

    if FileExtension = LowerCase('png') then
    begin
      ImagePNG := TPNGImage.Create;
      try
        ImagePNG.LoadFromStream(RS);
        Graphic := ImagePNG;
      finally
        ImagePNG.Free;
      end;
    end;

    if FileExtension = LowerCase('gif') then
    begin
      ImageGif := TGIFImage.Create;
      try
        ImageGif.LoadFromStream(RS);
        Graphic := ImageGif;
      finally
        ImageGif.Free;
      end;
    end;
  finally
    RS.Free;
  end;

  if Graphic <> nil then
  begin
    showmessage('gr vorhanden');
    //Form1.image1.Picture.Graphic := graphic;

    //showmessage('gr vorhanden');
    Result := Graphic;
  end;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
  image1.Picture.Graphic := nil;
  image1.Picture.Graphic := (GetGraphicFromResource('bild_jpg'));
  //image1.Picture.Graphic.Assign(GetGraphicFromResource('bild_jpg'));
end;
  Mit Zitat antworten Zitat
 

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz