Gibt es eine Unit um PNG Dateien einzuladen?
Gibt es eine Unit um PNG Dateien einzuladen?
Hallo,
habe mich gerade neu angemeldet und möchte auch gleich die für mich im Moment wichtigste Frage stellen:
Gibt es irgendwo einfach eine nur ein Unit um PNG Dateien zu laden um es dann vom Cancas des ladenden Objekts in einen Bereich einer TPaintbox zu kopieren?
Ich habe schon eine Menge über GraphicEx und auch über glBitmap gefunden, aber leider kann ich die (vermutlich) nicht nutzen, da ich meine Progmme mit Turbo Delphi Explorer, damals noch von Borland kostenlos mit unendlicher Nutzungsdauer, schreibe. Deren einzige (?) Einschränkung ist, dass man keine Bibliotheken hinzufügen kann. Und ausgerechnet das PNG Format wird dort noch nicht unterstützt.
So muss ich also (vermutlich) immer alle benötigten Dateien, auch Units im gleichen Projekt haben. Und bei GraphicEx und glBitmap wird das dann doch sehr unübersichtlich......
Es würde mich freuen, wenn es eine Möglichkeit gäbe, denn ich fände es nicht gut, wenn ich wegen so einer "Kleinigkeit" wirklich auf C++ Express umsteigen müsste, denn Pascal und Delphi habe ich mindestens schon 22 Jahre genutzt......
Fragende Grüße, schymura
habe mich gerade neu angemeldet und möchte auch gleich die für mich im Moment wichtigste Frage stellen:
Gibt es irgendwo einfach eine nur ein Unit um PNG Dateien zu laden um es dann vom Cancas des ladenden Objekts in einen Bereich einer TPaintbox zu kopieren?
Ich habe schon eine Menge über GraphicEx und auch über glBitmap gefunden, aber leider kann ich die (vermutlich) nicht nutzen, da ich meine Progmme mit Turbo Delphi Explorer, damals noch von Borland kostenlos mit unendlicher Nutzungsdauer, schreibe. Deren einzige (?) Einschränkung ist, dass man keine Bibliotheken hinzufügen kann. Und ausgerechnet das PNG Format wird dort noch nicht unterstützt.
So muss ich also (vermutlich) immer alle benötigten Dateien, auch Units im gleichen Projekt haben. Und bei GraphicEx und glBitmap wird das dann doch sehr unübersichtlich......
Es würde mich freuen, wenn es eine Möglichkeit gäbe, denn ich fände es nicht gut, wenn ich wegen so einer "Kleinigkeit" wirklich auf C++ Express umsteigen müsste, denn Pascal und Delphi habe ich mindestens schon 22 Jahre genutzt......
Fragende Grüße, schymura
- corpsman
- Lazarusforum e. V.
- Beiträge: 1619
- Registriert: Sa 28. Feb 2009, 08:54
- OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
- CPU-Target: 64Bit
- Wohnort: Stuttgart
- Kontaktdaten:
Re: Gibt es eine Unit um PNG Dateien einzuladen?
PNG Files kannst du Laden
siehe im Verzeichniss
/lazarus/components/images
da must nur ImagesForlazarus installieren und dann eben die lazpng einbinden.
nur ob dir das in deinem Speziellen Fall hilft ???
siehe im Verzeichniss
/lazarus/components/images
da must nur ImagesForlazarus installieren und dann eben die lazpng einbinden.
nur ob dir das in deinem Speziellen Fall hilft ???
--
Just try it
Just try it
-
- Lazarusforum e. V.
- Beiträge: 2808
- Registriert: Fr 22. Sep 2006, 10:38
- OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
- Wohnort: Hessen
- Kontaktdaten:
Re: Gibt es eine Unit um PNG Dateien einzuladen?
Hallo schymura,schymura hat geschrieben:Gibt es irgendwo einfach eine nur ein Unit um PNG Dateien zu laden um es dann vom Cancas des ladenden Objekts in einen Bereich einer TPaintbox zu kopieren?
die Möglichkeit gibt es mit einem TImage. Das kannst Du entweder im Bereich "Additional" der Objektleiste finden & auf die Form ziehen oder aber virtuell erzeugen.
Heißt Dein TImage-Objekt Image1, so funktioniert das Laden eines PNG mit folgendem Aufruf:
Code: Alles auswählen
Image1.Picture.PNG.LoadFromFile('Pfad/Dateiname.png');
Viele Grüße, Euklid
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: Gibt es eine Unit um PNG Dateien einzuladen?
Code: Alles auswählen
Picture.PNG.LoadFromFile('Pfad/Dateiname.png');
Code: Alles auswählen
var
Pic:TPicture;
begin
Pic:=TPicture.Create;
pic.LoadFromFile('Pfad/Dateiname.png');
// So meine ich müsste es gehen.
MyCanvas.Draw(x,y,pic.bitmap);
MFG
Michael Springwald
Michael Springwald
Re: Gibt es eine Unit um PNG Dateien einzuladen?
Hallo,
danke für die Antworten besonders an pluto und Euklid.
Wenn das Turbo Delphi
Image1.Picture.PNG.LoadFromFile('Pfad/Dateiname.png');
kennen würde, dann hätte ich ja auch gar kein Problem. Aber es kennt es halt nicht, war 2006 wohl noch nicht ganz so up to date.
So weit ich es glaube probiert zu haben kennt es halt nur BMP, JPG, ICO und eine Metadatei.
Aber ich will die zweite genannte Möglichkeit gern "nochmal" probieren. Wenn mich allerdings nicht alles täuscht hatte ich damit schon gespielt und leider nur die Fehlermeldung erhalten, dass das Bild ein unbekanntes Format (also keins der oben genannten) ist.
Habs jetzt noch mal schnell getestet. Ergebnis:
Errormeldung: "Unbekannte Bilddateierweiterung (.png)"
Das, was ich schon kannte.....
Ich hoffe weiter auf eine Unit, die das PNG Format einbauen kann.
Schöne Grüße, schymura
danke für die Antworten besonders an pluto und Euklid.
Wenn das Turbo Delphi
Image1.Picture.PNG.LoadFromFile('Pfad/Dateiname.png');
kennen würde, dann hätte ich ja auch gar kein Problem. Aber es kennt es halt nicht, war 2006 wohl noch nicht ganz so up to date.
So weit ich es glaube probiert zu haben kennt es halt nur BMP, JPG, ICO und eine Metadatei.
Aber ich will die zweite genannte Möglichkeit gern "nochmal" probieren. Wenn mich allerdings nicht alles täuscht hatte ich damit schon gespielt und leider nur die Fehlermeldung erhalten, dass das Bild ein unbekanntes Format (also keins der oben genannten) ist.
Habs jetzt noch mal schnell getestet. Ergebnis:
Errormeldung: "Unbekannte Bilddateierweiterung (.png)"
Das, was ich schon kannte.....
Ich hoffe weiter auf eine Unit, die das PNG Format einbauen kann.
Schöne Grüße, schymura
Re: Gibt es eine Unit um PNG Dateien einzuladen?
Aber du weisst schon, dass du hier im Lazarus Forum bist, oder?schymura hat geschrieben: Wenn das Turbo Delphi
kennen würde,
Lazarus kann PNG von Haus aus. Für Delphi solltest du besser in Delphi Foren fragen oder googlen:
http://www.pjh2.de/delphi/articles/graphic/png.php?l=de" onclick="window.open(this.href);return false;
Re: Gibt es eine Unit um PNG Dateien einzuladen?
Hallo theo,
ja, das weiß ich schon.
Aber vermutlich weiß ich nicht, was Lazarus ist....
In Delphi Foren wird immer wieder darauf hingewiesen, dass es vermutlich bei Lazarus so eine Software gibt......
Hallo corpsman,
vermutlich bin ich zu dumm, zu neu hier, oder beides.
Der von dir angegebene Link funktioniert für mich (in mehreren Variantionsversuchen) nicht.
Schöne Grüße, schymura
ja, das weiß ich schon.
Aber vermutlich weiß ich nicht, was Lazarus ist....
In Delphi Foren wird immer wieder darauf hingewiesen, dass es vermutlich bei Lazarus so eine Software gibt......
Hallo corpsman,
vermutlich bin ich zu dumm, zu neu hier, oder beides.
Der von dir angegebene Link funktioniert für mich (in mehreren Variantionsversuchen) nicht.
Schöne Grüße, schymura
-
- Lazarusforum e. V.
- Beiträge: 2808
- Registriert: Fr 22. Sep 2006, 10:38
- OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
- Wohnort: Hessen
- Kontaktdaten:
Re: Gibt es eine Unit um PNG Dateien einzuladen?
Ja, Lazarus kann dasschymura hat geschrieben:Hallo theo,
ja, das weiß ich schon.
Aber vermutlich weiß ich nicht, was Lazarus ist....
In Delphi Foren wird immer wieder darauf hingewiesen, dass es vermutlich bei Lazarus so eine Software gibt......

schymura:
Wie wäre es, dies als eine Willkommene Gelegenheit anzusehen, Euer Projekt auf Lazarus zu portieren?
Ein solcher Schritt wird mit einem Gewinn an Plattformunabhängigkeit, Performance und Flexibilität einher gehen - ist also durch und durch lohnenswert.
Viele Grüße, Euklid
Re: Gibt es eine Unit um PNG Dateien einzuladen?
Ich glaube du bist ziemlich verpeilt.schymura hat geschrieben: Aber vermutlich weiß ich nicht, was Lazarus ist....
In Delphi Foren wird immer wieder darauf hingewiesen, dass es vermutlich bei Lazarus so eine Software gibt......
...
vermutlich bin ich zu dumm, zu neu hier, oder beides.
Der von dir angegebene Link funktioniert für mich (in mehreren Variantionsversuchen) nicht.

Die Variante in der LCL funzt ziemlich sicher nicht mit Delphi, aber warum nimmst du nicht einfach eine Version von hier?
http://www.pjh2.de/delphi/articles/graphic/png.php?l=de" onclick="window.open(this.href);return false;
GraphicEx muss man afair nicht installieren.
Zu Lazarus wechseln ist natürlich auch gut.

-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: Gibt es eine Unit um PNG Dateien einzuladen?
Ich hatte Delphi 7, und das hat meine ich auch schon PNG über die obengeannte Lösung angezeigt. Mach doch mal folgenden Versuch:
Platziere ein TImage auf das From, und klicke doppelt drauf. Du solltest dann das PNG laden.
Für Delphi gibt es etliche Erweiterungen, die auch PNG unterstützen. Kann aber auch sein das, dass wie bei JPEG ist: Da muss erst eine unit eingebunden werden: jpeg. könnte sein das bei PNG auch sowas gibt z.b. könnte die unit png heißen oder so ähnlich... Ansonsten kann es nur an deiner Grafik Datei liegen. Sicher das es ein PNG Datei ist ? Nur weil es die Endung PNG hat, muss es noch lange kein PNG sein. In eine Flasche Wasser kann ich auch alles rein tun, was ich möchte... Du könntest auch versuchen mit MS-Paint eine Test Grafik zu erstellen und die dann im PNG Format abspeichern. Dann weißt du es 100% Sicher das es geht oder nicht geht.
Sonst müsstest du das mal mit Lazarus testen.
@Euklid
Du übertreibst. Meiner Meinung nach hast du NUR in EINEM Punkt recht: "Plattform unabhängig". Die anderen Punkten kann man auch Doppelt deuten bzw. sind unklar...
Performance: Meinst du damit schneller Arbeiten ? Dann gebe ich dir recht, oder meinst du damit das die Software schneller läuft ? Da währe ich mir jetzt unsicher....
Flexibilität: Wenn wir das gleiche darunter verstehen, würde ich eher sagen, nein. Z.B. gibt es noch nicht für jede Aufgabe eine Komponente. Dann währe es Flexibel.
Ich hätte andere Punkte hervorgehoben:
01: OpenSoruce, Kostenlos
02: Zu 60 bis 70% Delphi 7 Kompatibel
Platziere ein TImage auf das From, und klicke doppelt drauf. Du solltest dann das PNG laden.
Für Delphi gibt es etliche Erweiterungen, die auch PNG unterstützen. Kann aber auch sein das, dass wie bei JPEG ist: Da muss erst eine unit eingebunden werden: jpeg. könnte sein das bei PNG auch sowas gibt z.b. könnte die unit png heißen oder so ähnlich... Ansonsten kann es nur an deiner Grafik Datei liegen. Sicher das es ein PNG Datei ist ? Nur weil es die Endung PNG hat, muss es noch lange kein PNG sein. In eine Flasche Wasser kann ich auch alles rein tun, was ich möchte... Du könntest auch versuchen mit MS-Paint eine Test Grafik zu erstellen und die dann im PNG Format abspeichern. Dann weißt du es 100% Sicher das es geht oder nicht geht.
Sonst müsstest du das mal mit Lazarus testen.
@Euklid
Du übertreibst. Meiner Meinung nach hast du NUR in EINEM Punkt recht: "Plattform unabhängig". Die anderen Punkten kann man auch Doppelt deuten bzw. sind unklar...
Performance: Meinst du damit schneller Arbeiten ? Dann gebe ich dir recht, oder meinst du damit das die Software schneller läuft ? Da währe ich mir jetzt unsicher....
Flexibilität: Wenn wir das gleiche darunter verstehen, würde ich eher sagen, nein. Z.B. gibt es noch nicht für jede Aufgabe eine Komponente. Dann währe es Flexibel.
Ich hätte andere Punkte hervorgehoben:
01: OpenSoruce, Kostenlos
02: Zu 60 bis 70% Delphi 7 Kompatibel
MFG
Michael Springwald
Michael Springwald
-
- Lazarusforum e. V.
- Beiträge: 2808
- Registriert: Fr 22. Sep 2006, 10:38
- OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
- Wohnort: Hessen
- Kontaktdaten:
Re: Gibt es eine Unit um PNG Dateien einzuladen?
Der FPC braucht so wenig RAM wie kaum ein anderer Kompiler. Das zeigen sämtliche shootouts.pluto hat geschrieben: @Euklid
Performance: Meinst du damit schneller Arbeiten ? Dann gebe ich dir recht, oder meinst du damit das die Software schneller läuft ? Da währe ich mir jetzt unsicher....
Als wir Promathika von Delphi auf Lazarus portierten machten wir Benchmarks bzgl. des Berechnens von numerischen Integralen und des Zeichnens von Funktionen. Das Ergebnis: Die Prozesse waren mit einem Lazarus-kompilierten Programm doppelt so schnell abgeschlossen wie mit einem Delphi-kompilierten Programm.
Ich verstehe darunter die hohe Konfigurierbarkeit: Brauchst Dir nur mal die Compilereinstellungen anzugucken. Per Mausklick kompiliert man ein Programm für qt oder gtk. Sind die entsprechenden Pakete installiert, reicht ein Klick für Crosscomliling ohne Betriebssystemwechsel - und das widgetset wird ebenfalls an das neue System mit nur einem Klick angepasst. Sowas kenne ich von keiner C-Umgebung.Flexibilität: Wenn wir das gleiche darunter verstehen, würde ich eher sagen, nein. Z.B. gibt es noch nicht für jede Aufgabe eine Komponente.
Inzwischen gibt es für die allermeisten Anwendungen auch Komponenten - nicht zuletzt deshalb, weil viele für Delphi geschriebene Komponenten portiert wurden.
Gruß, Euklid
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: Gibt es eine Unit um PNG Dateien einzuladen?
Bei der Entwicklung von meinem Prototypen der "Text Engine", meinte der Mitentwickler auch das die Lazarus-TreeView schneller sein soll als die Delphi(Er verwendet Delphi 3) TreeView...
Das ist bestimmt nur ein Beispiel.
Das ist bestimmt nur ein Beispiel.
MFG
Michael Springwald
Michael Springwald