Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   PNG aus Stream in TImage einfügen (https://www.delphipraxis.net/179308-png-aus-stream-timage-einfuegen.html)

Luki206 25. Feb 2014 19:26

PNG aus Stream in TImage einfügen
 
Hi, ich habe ein wenig gegoogled aber habe nichts gefunden wie man eine *.png Datei aus einem Stream in ein Image laden kann. Kann mir jemand da behilflich sein?
Danke
Luki :)

Sir Rufo 25. Feb 2014 19:32

AW: PNG aus Stream in TImage einfügen
 
Ganz einfach mit Delphi-Referenz durchsuchenTPngImage.LoadFromStream

Delphi-Quellcode:
var
  LGraphic : TGraphic;
begin
  LGraphic := TPngImage.Create;
  try
    LGraphic.LoadFromStream( DerStreamMitDemPng );
    Image1.Picture.Assign( LGraphic );
  finally
    LGraphic.Free;
  end;
end;
Du musst aber auch auf Delphi-Referenz durchsuchenTStream.Position achten.
LoadFromStream liest immer von der aktuellen Stream Position.

Luki206 25. Feb 2014 19:46

AW: PNG aus Stream in TImage einfügen
 
Ok danke. Werde ich mir merken ;)

Luki206 25. Feb 2014 19:49

AW: PNG aus Stream in TImage einfügen
 
Ich habe jetzt noch eine Frage aber zu den Ressourcen DLL's. Muss ich jetzt wirklich einen neuen Thread auf machen? Weil ich hätte dann drei Threads da stehen und das sieht nicht gerade gut aus.. ;)

Sir Rufo 25. Feb 2014 19:53

AW: PNG aus Stream in TImage einfügen
 
Zitat:

Zitat von Luki206 (Beitrag 1249606)
Ich habe jetzt noch eine Frage aber zu den Ressourcen DLL's. Muss ich jetzt wirklich einen neuen Thread auf machen? Weil ich hätte dann drei Threads da stehen und das sieht nicht gerade gut aus.. ;)

Hat das was mit Streams und einem Png-Image zu tun?

Ja - dann einfach hier weiterfragen
Nein - Neuer Thread

Evtl. suchst du ja auch nach Delphi-Referenz durchsuchenTPngImage.LoadFromResourceId oder Delphi-Referenz durchsuchenTPngImage.LoadFromResourceName

Luki206 25. Feb 2014 20:05

AW: PNG aus Stream in TImage einfügen
 
Ja hat es, denke ich mal. Wenn nicht gerade bescheid sagen und ich mache einen neuen Thread auf ;)
Folgendes: Ich habe jetzt geschafft eine *.png File aus der .dll zu laden nur ist das die Falsche und im Moment sind auch nur zwei Grafiken dort hinterlegt. Wenn ich also mein Programm starte wird das falsche Bild angezeigt. Ich weiß nicht wie ich's erklären soll deshalb jetzt hier mein Code um die Datei zu laden:
Delphi-Quellcode:
procedure TFrmHaupt.LoadPict(ort: Integer);
var
myStream: TResourceStream;
h: Cardinal;
LGraphic: TGraphic;
begin
 h:= LoadLibrary('LW_MP_166.dll');
 mystream := TResourceStream.CreateFromID(h, ort, RT_RCDATA);
 LGraphic := TPngImage.Create;
 try
 LGraphic.LoadFromStream(mystream);
 ImgPlayPau.Picture.Assign(LGraphic);
 finally
   mystream.Free;
   LGraphic.Free;
 end;
end;
Also die Variable ort ruft ja die Datei auf bzw. da wo sie gespeichert ist. Wenn ich da eine 1 drinnen habe kommt die falsche Grafik. Mit anderen Zahlen kommt Ressource nicht gefunden nur weiß ich nicht woran das liegt und ich habe auch schon meine Ressourcen-Namen in der DLL in 1 und 2 geändert und trotzdem geht es nicht. Ich denke aber mal ich machen einen tierisch-großen Fehler oder?

Sir Rufo 25. Feb 2014 20:15

AW: PNG aus Stream in TImage einfügen
 
Zitat:

Zitat von Sir Rufo (Beitrag 1249609)

Hast du die DLL auch neu erstellt und liegt diese an der richtigen Stelle?

Luki206 25. Feb 2014 20:18

AW: PNG aus Stream in TImage einfügen
 
Jap, neu erstellt, liegt im richtigen Ordner bzw. im Verzeichnis meiner *.exe

michaelthuma 25. Feb 2014 20:57

AW: PNG aus Stream in TImage einfügen
 
Wenn du über ID lädtst dann ist es vonnöten die Resource über ID zu definieren bspw.

Bilder.rc
Code:
#define ID_BILD1 1
#define ID_BILD2 2

ID_BILD1 RCDATA "Borland.jpg"
ID_BILD2 RCDATA "Delphi.jpg"
Die 1 wird beim compilieren der Ressourcen anstatt von IDS_BILD1 eingesetzt. Du kannst eine Ressource entweder mit einer Zahl praktisch der ID oder dem Namen benennen.


Zitat:

Zitat von Luki206 (Beitrag 1249618)
Jap, neu erstellt, liegt im richtigen Ordner bzw. im Verzeichnis meiner *.exe


himitsu 25. Feb 2014 21:27

AW: PNG aus Stream in TImage einfügen
 
Jupp, genau so ist es.

Und man könnte natürlich auch ohne "Konstanten" arbeiten.
Code:
1 RCDATA "Borland.jpg"
2 RCDATA "Delphi.jpg"
Ansonsten wäre es praktisch, wenn man diese Konstanten auch im Delphi definiert und bei LoadPict oder LoadFromResourceId entsprechend verwendet.
Delphi-Quellcode:
const
  ID_BILD1 = 1;
  ID_BILD2 = 2;


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:41 Uhr.
Seite 1 von 2  1 2      

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