![]() |
Screenshot aber wie?!
Hi Ihr Programmier lustigen :)
Ich habe in einem anderem Forum (bitte Verzeiht mir) einen Code gefunden der genau passt bis auf zwei Kleinigkeiten. 1) Wie kann ich den Code so umschreiben dass der mir auf "Form4" den Screenshot macht und 2) Wo ist der Fehler (in der Zeile wo die ganzen ################### sind ^^ Es kommt folgende Fehlermeldung: unit3.pas(76,40) Fatal: Syntax error, ")" expected but "," found
Code:
die screenshots werden erstellt ... aber das png ist schwarz ...
procedure TForm1.Button5Click(Sender: TObject);
var MyBitmap: TBitmap; MyBitmap2: TBitmap; MyDC: HDC; png: TPortableNetworkGraphic; R: TRect; begin R.TopLeft := Form1.BoundsRect.TopLeft; R.BottomRight := Form1.BoundsRect.BottomRight; MyDC := GetDC(Self.Handle); MyBitmap := TBitmap.Create; MyBitmap2 := TBitmap.Create; MyBitmap2.Width := R.Right - R.Left; MyBitmap2.Height := R.Bottom - R.Top; png := TPortableNetworkGraphic.Create; try MyBitmap.LoadFromDevice(MyDC); MyBitmap.SaveToFile('FormsAppearance.bmp'); //MyBitmap2.Canvas.CopyRect(ClientRect,MyBitmap.Canvas,ClientRect); ########################################MyBitmap2.Canvas.copyRect(Rect(0, 0, MyBitmap2.Width, MyBitmap2.Height),MyBitmap.Canvas, R); MyBitmap2.SaveToFile('FormsAppearance2.bmp'); png.Assign(MyBitmap2); png.SaveToFile('shottest.png'); finally ReleaseDC(Self.Handle, MyDC); FreeAndNil(MyBitmap); FreeAndNil(MyBitmap2); png.Free; end; end; |
AW: Screenshot aber wie?!
2. Guck dir mal die Zeile an. Fällt dir da was auf?
|
AW: Screenshot aber wie?!
Zitat:
|
AW: Screenshot aber wie?!
Zitat:
Ich kenn mich mit canvas nicht wirklich aus und ich weiss wirklich nicht wo der Fehler is |
AW: Screenshot aber wie?!
Zitat:
|
AW: Screenshot aber wie?!
Das war mir klar. Aber er meckert doch wegen der Klammern. Mach mal die Augen auf.
|
AW: Screenshot aber wie?!
Zitat:
Edit: also ich komm echt nicht drauf ich habe alles verucht ... bitte bitte seid so gut und schreibt mir mal die Lösung ach ja und ich benutze Lazarus falls das wichtig ist |
AW: Screenshot aber wie?!
Zitat:
Delphi-Quellcode:
procedure TForm1.Button5Click(Sender: TObject);
var MyBitmap: TBitmap; MyBitmap2: TBitmap; MyDC: HDC; png: TPortableNetworkGraphic; R: TRect; begin //Ermittelt den BoundsRect Bereich von Form1. //Das geht einfacher - aber das warum einfach, wenn es auch kompliziert geht //R := Form1.BoundsRect; R.TopLeft := Form1.BoundsRect.TopLeft; R.BottomRight := Form1.BoundsRect.BottomRight; //Ermittelt Handle für einen Gerätekontext, hier Wohl von Self.Handle MyDC := GetDC(Self.Handle); //Zwei Bitmaps-Objekte erstellen MyBitmap := TBitmap.Create; MyBitmap2 := TBitmap.Create; //Breite und Höhe für Bitmap2 zuweisen MyBitmap2.Width := R.Right - R.Left; MyBitmap2.Height := R.Bottom - R.Top; //Ein Png-Objekt erstellen png := TPortableNetworkGraphic.Create; try //Kenne ich nicht, läd vermutlich das Bild aus dem Gerätekontext MyBitmap.LoadFromDevice(MyDC); //Speichert das Bild irgendwo unter "FormsAppearance.bmp" //Richtige Pfadangeben sind besser. Ansonsten wird in dem aktuellen Ordner gespeichert. MyBitmap.SaveToFile('FormsAppearance.bmp'); //Kopiert Bild von MyBitmap nach MyBitmap2 mit Rect-Bereichen (Quelle, Ziel) von ClientRect //ClientRect ist wohl der Rect-Bereich von dem aktuellen Formular // //MyBitmap2.Canvas.CopyRect(ClientRect,MyBitmap.Canvas,ClientRect); //eine Variante ########################################MyBitmap2.Canvas.copyRect(Rect(0, 0, MyBitmap2.Width, MyBitmap2.Height),MyBitmap.Canvas, R); //MyBitmap2 speichern irgendwo MyBitmap2.SaveToFile('FormsAppearance2.bmp'); //An Png übergeben über Assign png.Assign(MyBitmap2); //Png speichern irgendwo png.SaveToFile('shottest.png'); finally //Freigaben ReleaseDC(Self.Handle, MyDC); FreeAndNil(MyBitmap); FreeAndNil(MyBitmap2); png.Free; end; end; |
AW: Screenshot aber wie?!
hey danke :D jetzt versteh ich des mal ... aber warum kommt da der fehler immernoch ... irgenwie stimmt da was net ....
|
AW: Screenshot aber wie?!
Hinterlege mal deine Delphiversion in deinem Profil.
Wenn deine Delphiversion nicht zu alt ist müsste Folgendes gehen:
Delphi-Quellcode:
procedure SaveFormImage(f: TForm; fn: TFileName);
begin with f.GetFormImage do begin SaveToFile(fn); Free; end; end; ... // und der Aufruf dazu SaveFormImage(Form4, 'FormsAppearance2.bmp'); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:56 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 by Thomas Breitkreuz