AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Screenshot aber wie?!

Ein Thema von Skrenkovic · begonnen am 8. Jan 2014 · letzter Beitrag vom 8. Jan 2014
Antwort Antwort
Seite 1 von 2  1 2      
Skrenkovic

Registriert seit: 7. Jan 2014
9 Beiträge
 
FreePascal / Lazarus
 
#1

Screenshot aber wie?!

  Alt 8. Jan 2014, 17:52
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:
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;
die screenshots werden erstellt ... aber das png ist schwarz ...
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

AW: Screenshot aber wie?!

  Alt 8. Jan 2014, 18:12
2. Guck dir mal die Zeile an. Fällt dir da was auf?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Screenshot aber wie?!

  Alt 8. Jan 2014, 18:17
2. Guck dir mal die Zeile an. Fällt dir da was auf?
Ich gehe mal davon aus, dass er die davor geschrieben hat um deutlich zu machen, wo der Fehler ist. Wenn nicht, dann geb ich dir recht.
  Mit Zitat antworten Zitat
Skrenkovic

Registriert seit: 7. Jan 2014
9 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Screenshot aber wie?!

  Alt 8. Jan 2014, 18:19
2. Guck dir mal die Zeile an. Fällt dir da was auf?
wenn ich den Fehler finden würde dann hätte ich hier nicht gefragt

Ich kenn mich mit canvas nicht wirklich aus und ich weiss wirklich nicht wo der Fehler is
  Mit Zitat antworten Zitat
Skrenkovic

Registriert seit: 7. Jan 2014
9 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Screenshot aber wie?!

  Alt 8. Jan 2014, 18:20
2. Guck dir mal die Zeile an. Fällt dir da was auf?
Ich gehe mal davon aus, dass er die davor geschrieben hat um deutlich zu machen, wo der Fehler ist. Wenn nicht, dann geb ich dir recht.
achso ... ja klar ##### sin nur zu zeigen wo Fehlermeldung kommt
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

AW: Screenshot aber wie?!

  Alt 8. Jan 2014, 18:32
Das war mir klar. Aber er meckert doch wegen der Klammern. Mach mal die Augen auf.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Skrenkovic

Registriert seit: 7. Jan 2014
9 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Screenshot aber wie?!

  Alt 8. Jan 2014, 18:41
Das war mir klar. Aber er meckert doch wegen der Klammern. Mach mal die Augen auf.
Oo aber wie soll man die denn sonst setzten ... habe so ziemlich jede möglichkeit eben ausprobiert ohne erfolg


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

Geändert von Skrenkovic ( 8. Jan 2014 um 19:25 Uhr)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#8

AW: Screenshot aber wie?!

  Alt 8. Jan 2014, 19:42
Zitat:
Ich kenn mich mit canvas nicht wirklich aus
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;
  Mit Zitat antworten Zitat
Skrenkovic

Registriert seit: 7. Jan 2014
9 Beiträge
 
FreePascal / Lazarus
 
#9

AW: Screenshot aber wie?!

  Alt 8. Jan 2014, 19:46
hey danke jetzt versteh ich des mal ... aber warum kommt da der fehler immernoch ... irgenwie stimmt da was net ....
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#10

AW: Screenshot aber wie?!

  Alt 8. Jan 2014, 19:57
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');
fork me on Github
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 12:41 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