Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi PNG anzeigen lassen (https://www.delphipraxis.net/16361-png-anzeigen-lassen.html)

Tanadirian 16. Feb 2004 03:57


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:
[Fehler] tbitmap.pas(54): '.' erwartet, aber ';' gefunden
bei
Delphi-Quellcode:
var
 BitMap1: TBitMap;
Hier der Code
Delphi-Quellcode:
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;
Ich hab noch nie mit Grafiken gearbeitet und in der DP auch nichts gefunden, hoffe ihr könnt mir helfen.

clues1 16. Feb 2004 06:47

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.

Bernhard Geyer 16. Feb 2004 12:07

Re: PNG anzeigen lassen
 
Eine sehr gute in Delphi geschriebene PNG-Komponte findest Du unter TPNGImage/PNG Delphi auf Sourceforge.

Delphi bietet von sich aus nur sehr schlechten PNG-Support.

Tanadirian 16. Feb 2004 12:32

Re: PNG anzeigen lassen
 
Hier ein Auszug aus der Delphihilfe:
Delphi-Quellcode:
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;
Wegen BitMap.LoadFromFile('MyBitmap.png'); dachte ich das ginge.

Graphics hab ich in der uses drinne


und bei der Sourgeforge-komponente fehlt ihm beim kompilieren die pngimage.dcu

Bernhard Geyer 17. Feb 2004 07:12

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.

Tanadirian 17. Feb 2004 22:12

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?

Bernhard Geyer 18. Feb 2004 07:20

Re: PNG anzeigen lassen
 
pngextra? Sagt mir nichts. In welcher Unit wird diese verwendet?

Tanadirian 18. Feb 2004 11:55

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.

Tanadirian 18. Feb 2004 15:19

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.

Bernhard Geyer 18. Feb 2004 16:04

Re: PNG anzeigen lassen
 
Sicher kannst Du damit ohne ein Formular arbeiten, indem du es codemäßig anlegt.

Code:
var
  png: TPngObject;
begin
  png := TPngObject.Create(nil);
  try
    // Dosomething
  finally
    png.Free;
  end;
end;
Was willst machen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:25 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