AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi PNGs oder Dateien allgemein in EXE einbinden und auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

PNGs oder Dateien allgemein in EXE einbinden und auslesen

Ein Thema von entwickler · begonnen am 11. Nov 2011 · letzter Beitrag vom 23. Dez 2011
Antwort Antwort
Seite 3 von 5     123 45      
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#21

AW: PNGs oder Dateien allgemein in EXE einbinden und auslesen

  Alt 13. Nov 2011, 15:49
Diese beiden Zeilen scheinen mir nicht zusammenzupassen:

Zitat:
ResStr := TResourceStream.Create(HInstance, 'Pokedex', RT_RCDATA);
und

Zitat:
Pokedex PNG "Pokedex2.png"
Sollte das nicht

Pokedex RCDATA "Pokedex2.png"

heißen?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von entwickler
entwickler

Registriert seit: 16. Feb 2011
Ort: Herten
78 Beiträge
 
Delphi 5 Professional
 
#22

AW: PNGs oder Dateien allgemein in EXE einbinden und auslesen

  Alt 13. Nov 2011, 16:24
Okay, habe ich abgeändert, doch der Fehler ändert sich nicht
Vielleicht hilft ja ein Bild des Fehlers, um die Fehlerquelle herauszufinden [Die Anwendung lässt sich normal starten, aber wenn ich auf den Button vom Testprogramm klicke:]:
Miniaturansicht angehängter Grafiken
anwendungsfehler.jpg  
Traue einem PC nur soweit, wie du ihn werfen kannst.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#23

AW: PNGs oder Dateien allgemein in EXE einbinden und auslesen

  Alt 13. Nov 2011, 16:47
Moment, DLL? Was hast Du denn wo drin?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von entwickler
entwickler

Registriert seit: 16. Feb 2011
Ort: Herten
78 Beiträge
 
Delphi 5 Professional
 
#24

AW: PNGs oder Dateien allgemein in EXE einbinden und auslesen

  Alt 13. Nov 2011, 17:07
In die DLL ist die *.res eingebunden; die DLL soll der Testanwendung das 80x80 Pixel große Bild als PNG übergeben (da muss ich noch gucken, wie ich das mache). Zwischendurch musste die PNG- Datei in einen Bitmap umgewandelt werden, damit ich aus dem Bild einen Part ausschneiden kann.
Traue einem PC nur soweit, wie du ihn werfen kannst.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#25

AW: PNGs oder Dateien allgemein in EXE einbinden und auslesen

  Alt 13. Nov 2011, 17:17
Nun mal langsam: wenn es eine reine Ressourcen-DLL ist, dann übergibt sie ja nichts. Und wenn nicht, kannst Du keine Objektinstanzen zwischen DLL und Hauptprogramm austauschen, dafür müsstest Du eine *.bpl erzeugen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#26

AW: PNGs oder Dateien allgemein in EXE einbinden und auslesen

  Alt 13. Nov 2011, 17:32
1. Dass Du die Resource so nicht laden kannst liegt daran dass das Bild nicht unter RC DATA sondern unter PNG liegt.
2. Du erzeugst weiterhin diese Formular, diesmal greifst Du sogar auf PNGButton1 bevor es erzeugt ist
3. Wen Du das Bild irgendwann geladen hast wirst Du es nicht schaffen ein transparentest Bild mit den bisherigen Mitteln zurückzugeben.


Mit ist nicht ganz klar was das mit der DLL soll, wenn Du den Ansatz weiterverfolgen willst würde ich Dir GDI+ ans Herz legen, ist frei herunterladbar.
Hier könntest Du in ein dynamische erzeugtes GPIMage direkt PNG's laden, der DLL würdest das Handle des ZielCanvas übergeben, die Zielkoordinaten, den Quellauschnitt und die DLL könnte direkt transparent in eine beliebiges Zielcanvas malen.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#27

AW: PNGs oder Dateien allgemein in EXE einbinden und auslesen

  Alt 13. Nov 2011, 18:18
So, ich habe das jetzt mal mit einer Ressourcen-DLL gemacht.
DLL:
Delphi-Quellcode:
library imagedll;

{$R pokedex.res}

begin
end.
Anwendung mit einem TImage drauf:
Delphi-Quellcode:
uses pngimage;

procedure TForm1.ButtonClick(Sender: TObject);
var
  DLLHandle: THandle;
  ResStream: TResourceStream;
  bmp: TBitmap;
  png: TPngImage;
begin
  DLLHandle := LoadLibrary(PChar(ExtractFilePath(ParamStr(0)) + 'imagedll.dll'));
  if DLLHandle <> 0 then
    try
      ResStream := TResourceStream.Create(DLLHandle, 'POKEDEX', RT_RCDATA);
      try
        ResStream.Position := 0;
        png := TPngImage.Create;
        try
          png.LoadFromStream(ResStream);
          bmp := TBitmap.Create;
          try
            bmp.Width := 80;
            bmp.Height := 80;
            bmp.PixelFormat := pf32Bit;
            BitBlt(bmp.Canvas.Handle, 0, 0, bmp.Width, bmp.Height, png.Canvas.Handle, 0, 0, SRCCOPY);
            Image1.Picture.Assign(bmp);
          finally
            bmp.Free;
          end;
        finally
          png.Free;
        end;
      finally
        ResStream.Free;
      end;
    finally
      FreeLibrary(DLLHandle);
    end;
end;
Wobei man sich natürlich fragen kann, ob man wirklich die Gesamtgrafik lädt und daraus dann den entsprechenden Ausschnitt herauskopiert oder das nicht vorher macht und die enthaltenen 493 Bildchen einzeln in die Ressource packt (siehe Anhang).
Angehängte Dateien
Dateityp: zip Pokemons.zip (2,29 MB, 8x aufgerufen)
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von entwickler
entwickler

Registriert seit: 16. Feb 2011
Ort: Herten
78 Beiträge
 
Delphi 5 Professional
 
#28

AW: PNGs oder Dateien allgemein in EXE einbinden und auslesen

  Alt 14. Nov 2011, 10:09
Danke, DeddyH.

[Ich kanns im moment nicht ausprobieren, hab delphi nicht zur Hand]
Der Programmcode klingt erstmal ganz gut, aber was bewirkt dieses

Zitat:
DLLHandle: THandle;
? Das verstehe ich daran nicht.
PS: Danke auch f. d. Einzelgrafiken!
Traue einem PC nur soweit, wie du ihn werfen kannst.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#29

AW: PNGs oder Dateien allgemein in EXE einbinden und auslesen

  Alt 14. Nov 2011, 10:13
Aus dem MSDN:
Zitat:
Prozesse rufen LoadLibrary (oder AfxLoadLibrary) auf, um eine explizite Verknüpfung mit einer DLL herzustellen. Wenn der Aufruf erfolgreich ist, ordnet die Funktion die angegebene DLL im Adressbereich des aufrufenden Prozesses zu und gibt ein Handle für die DLL zurück. Dieses Handle kann zusammen mit anderen Funktionen für die explizite Verknüpfung verwendet werden, z. B. GetProcAddressund FreeLibrary.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#30

AW: PNGs oder Dateien allgemein in EXE einbinden und auslesen

  Alt 14. Nov 2011, 11:02
Und wenn man sauberen Code haben möchte, dann legt man sich das in eine eigenen Funktion und nicht direkt in ein GUI-Event der Form
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 5     123 45      


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 04:35 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