![]() |
PNG anzeigen lassen
Hallo
Ich will mir auf nem Formular verschiedene Png-Bilder anzeigen lassen, bekomme das aber nicht hin :-( Ich hab mir ein Bsp. aus der Delphihilfe rauskopiert aber das funzt nicht da bekomme ich die Fehlermeldung
Delphi-Quellcode:
bei
[Fehler] tbitmap.pas(54): '.' erwartet, aber ';' gefunden
Delphi-Quellcode:
Hier der Code
var
BitMap1: TBitMap;
Delphi-Quellcode:
Ich hab noch nie mit Grafiken gearbeitet und in der DP auch nichts gefunden, hoffe ihr könnt mir helfen.
procedure TForm1.Button1Click(Sender: TObject);
var BitMap1: TBitMap; begin BitMap1 := TBitMap.Create; try BitMap1.LoadFromFile('c:\Program Files\common Files\Borland Shared\Images\Splash\256color\factory.png'); Canvas.Draw(20,20,BitMap1); finally BitMap1.Free; end; end; |
Re: PNG anzeigen lassen
1.
PNG mit TBitMap laden Geht auf jeden fall nicht. Du musst dir von torry.net mal eine PNG Komponente downloaden. 2. Schreib mal deine Uses Klausel, ich schätze mal du hast tbitmap drinne, muss aber graphics lauten. |
Re: PNG anzeigen lassen
Eine sehr gute in Delphi geschriebene PNG-Komponte findest Du unter
![]() Delphi bietet von sich aus nur sehr schlechten PNG-Support. |
Re: PNG anzeigen lassen
Hier ein Auszug aus der Delphihilfe:
Delphi-Quellcode:
Wegen BitMap.LoadFromFile('MyBitmap.png'); dachte ich das ginge.
procedure TForm1.Button1Click(Sender: TObject);
// Dieses Beispiel zeigt die direkte Ausgabe in ein Bitmap var x,y : Integer; BitMap : TBitMap; P : PByteArray; begin BitMap := TBitMap.create; try // Ersetzen Sie in Windows MyBitmap.png durch den vollständigen Pfadnamen: // C:\Program Files\Common Files\Borland Shared\Images\Splash\256color\factory.bmp BitMap.LoadFromFile('MyBitmap.png'); for y := 0 to BitMap.Height -1 do begin P := BitMap.ScanLine[y]; for x := 0 to BitMap.Width -1 do P[x] := y; end; Canvas.Draw(0,0,BitMap); finally BitMap.Free; end; end; Graphics hab ich in der uses drinne und bei der Sourgeforge-komponente fehlt ihm beim kompilieren die pngimage.dcu |
Re: PNG anzeigen lassen
Wenn die Datei "pngimage.dcu" nicht gefunden werden kannst mußt Du noch den Delphi-Suchpfad ergänzen, so das der Pfad in der die Datei "pngimage.pas" liegt auch aufgenommen ist.
Ist nun mal m.E. 'ne Macke von Delphi hier nicht selbständig den Suchpfad zu ergänzen wenn Packages hinzugefügt werden. |
Re: PNG anzeigen lassen
Danke Bernhard, jetzt gehts weiter, nun fehlt ihm die pngextra.dcu und weder diese dcu oder die pas hab ich auf der Platte. Muß ich da noch extra was downloaden?
|
Re: PNG anzeigen lassen
pngextra? Sagt mir nichts. In welcher Unit wird diese verwendet?
|
Re: PNG anzeigen lassen
Delphi-Quellcode:
program showcase2;
uses Forms, showcase2unit in 'showcase2unit.pas' {Form1}, pngextra in '..\pngextra.pas'; {<-- Hier kommt die Fehlermeldung} {$R *.RES} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end. |
Re: PNG anzeigen lassen
Hab die entsprechende Zeile rausgenommen und jetzt geht die Komponente. Nun hab ich aber schon ne neue Frage, kann ich auch einfach nur die pngimage.pas in mein Prog einbinden und dann direkt mit den png's arbeiten? Wenn ja, kennt sich jmd damit aus und kann mir ein paar Stichwörter dazu geben? Ich hab nicht die Zeit mir 5000+ Zeilen Code durchzulesen.
Schon im Voraus vielen Dank. |
Re: PNG anzeigen lassen
Sicher kannst Du damit ohne ein Formular arbeiten, indem du es codemäßig anlegt.
Code:
Was willst machen?
var
png: TPngObject; begin png := TPngObject.Create(nil); try // Dosomething finally png.Free; end; end; |
Re: PNG anzeigen lassen
pixelweise auslesen und dann vergößern indem ich pixel hinzufüge (sollen bei mouseover "herangeholt" werden)
|
Re: PNG anzeigen lassen
Pixelweises auslesen wird AFAIK mit der aktuellen Version unterstützt.
Rest kann ich dir keine Tipps geben, da ich Komponente nur für "stupide" Anzeige verwende. |
Re: PNG anzeigen lassen
Hier die Lösung meines Problems
Delphi-Quellcode:
var
png: TPngObject; farbe:TColor; begin png := TPngObject.Create; try farbe:=png.pixels[x,y]; //Gibt mir die Farbe des Pixels png.pixels[x,y]:=clBlack; //Setzt die Farbe des Pixel auf schwarz finally png.Free; end; end; |
Re: PNG anzeigen lassen
:shock:
Oh man, wie kann man versehentlich abgeschickte Posting's wieder löschen ??? Oh Gott wie peinlich |
Re: PNG anzeigen lassen
Zitat:
Wir haben hier echt zu wenig Rechte. :mrgreen: |
Re: PNG anzeigen lassen
haha, auch schwarze Katzen getestet :lol:
|
Re: PNG anzeigen lassen
Um mal wieder zum Thema des Topics zurückzukommen:
Hab beim Zugreifen auf einzelne Pixel noch nen Bug? entdeckt. Ich konnte nur auf alle ungraden Pixel der X-Achse zugreifen! Erst nachdem ich das Bild mit
Delphi-Quellcode:
gespeichert und mit
PngObject.SaveToFile(Filename)
Delphi-Quellcode:
neu geladen hatte, konnte ich auch auf die geraden Pixel zugreifen.
PngObject.LoadFromFile(Filename)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:19 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