Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Screenshot von Groupbox erstellen und in Zwischenablage
daywalker0086 - Mi 29.02.12 14:44
Titel: Screenshot von Groupbox erstellen und in Zwischenablage
Hallo Leute, wiedereinmal ich am anderen Ende.
Ich hae eine Groupbox, in welcher sich 5 Eingabefelder befinden.
Wenn ich einen Button betätige soll ein Screenshot dieser Groupbox zur späteren Verwendung in anderen Programmen in die Zwischenablage als .bmp gespeichert werden.
Ich habe ein wenig gegoogelt aber noch nicht das richtige gefunden, bzw. konnte es nicht auf mein Problem anwenden.
Wie kann ich das am einfachsten mit welchen Routinen realisieren?
Grüße Christian
mandras - Mi 29.02.12 15:10
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| ... uses clipbrd;
procedure TForm1.Button1Click(Sender: TObject); var B: TBitmap; begin B:=TBitmap.Create; B.Width := Groupbox1.Width; B.Height := Groupbox1.Height; Groupbox1.PaintTo(B.Canvas,0,0); Clipboard.Assign(B); end; |
daywalker0086 - Mi 29.02.12 15:49
Hallo,
danke für den Code funktioniert prima, und wieder was gelernt.
Nur noch eine Frage:
gibt es da irgend nen Skalierungsfaktor?
Wenn ich das Bild dann in Word einfüge ist das mindestens 1/3 größer als in meinem Programm?
Grüße Christian
bummi - Mi 29.02.12 15:58
vor dem paintTo
SetCanvasZoomAndRotation(b.Canvas, 0.33,0,0,0)
aufrufen ....
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| uses math; {$R *.dfm}
Procedure SetCanvasZoomAndRotation(ACanvas:TCanvas;Zoom:Double;Angle:Double;CenterpointX,CenterpointY:Double); var form : tagXFORM; Winkel:Double;
begin Winkel := DegToRad(Angle); SetGraphicsMode(ACanvas.Handle, GM_ADVANCED); SetMapMode(ACanvas.Handle,MM_ANISOTROPIC); form.eM11 := Zoom * cos( Winkel); form.eM12 := Zoom *Sin( Winkel) ; form.eM21 := Zoom * (-sin( Winkel)); form.eM22 := Zoom * cos( Winkel) ; form.eDx := CenterpointX; form.eDy := CenterpointY; SetWorldTransform(ACanvas.Handle,form); end; |
daywalker0086 - Mi 29.02.12 16:14
Dadurch wird leider nur ein Ausschnitt von der Groupbox genommen und der dann total verschwommen dargestellt.
bummi - Mi 29.02.12 16:56
Jepp, ich habe mit PaintTo grad mal angeschaut.
Der Richtige Weg wird sein das Bild in Word zu skalieren, dann bleibt die Qualität auch bein Druck vorhanden.
Über einen Umweg eines zweiten Bitmaps in den das erste Skaliert gemalt wird könntest Du auch verkleinern, der richtige Ansatz wird aber die Skalierung in Word sein.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!