Wie kopiere ich nicht sichtbare Form in eine Bitmap?
-
- Beiträge: 607
- Registriert: Di 19. Mai 2015, 20:05
- OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
- CPU-Target: x86_64-linux-gtk2
Wie kopiere ich nicht sichtbare Form in eine Bitmap?
Hallo an Alle,
ich habe eine Form welche größer als der Bildschirm ist und möchte von dieser Form einen Screenshot machen und in eine Bitmap kopieren. Leider wird mir der nicht sichtbare Teil der Form nicht richtig dargestellt. Unter Windows hatte ich mit paintto und auch mit getformimage Erfolg. Unter Linux habe ich noch keine funktionierente Lösung gefunden.
Weiß hier jemand Rat?
Viele Grüße
Bernd
ich habe eine Form welche größer als der Bildschirm ist und möchte von dieser Form einen Screenshot machen und in eine Bitmap kopieren. Leider wird mir der nicht sichtbare Teil der Form nicht richtig dargestellt. Unter Windows hatte ich mit paintto und auch mit getformimage Erfolg. Unter Linux habe ich noch keine funktionierente Lösung gefunden.
Weiß hier jemand Rat?
Viele Grüße
Bernd
Re: Wie kopiere ich nicht sichtbare Form in eine Bitmap?
Der folgende Code funktioniert bei mir sowohl unter Windows als auch Ubuntu (gtk2, gtk3, qt5), auch wenn ich das Formular so weit aufziehe, dass es breiter ist als der Bildschirm:
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
var
bmp: TBitmap;
begin
bmp := GetFormImage;
try
bmp.SaveToFile('test.bmp');
finally
bmp.Free;
end;
end;
-
- Beiträge: 607
- Registriert: Di 19. Mai 2015, 20:05
- OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
- CPU-Target: x86_64-linux-gtk2
Re: Wie kopiere ich nicht sichtbare Form in eine Bitmap?
Vielen Dank für die Antwort,
bei mir gehts leider nicht. Sieht so aus: Viel Grüße
Bernd
bei mir gehts leider nicht. Sieht so aus: Viel Grüße
Bernd
Re: Wie kopiere ich nicht sichtbare Form in eine Bitmap?
Das schaut nach selbst-gezeichnet aus. Kannst du ein kleines Projekt zusammenstellen, an dem man das Problem nachvollziehen kann?
-
- Beiträge: 607
- Registriert: Di 19. Mai 2015, 20:05
- OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
- CPU-Target: x86_64-linux-gtk2
Re: Wie kopiere ich nicht sichtbare Form in eine Bitmap?
Ich versuche es mal, leider ist mein Progrämmchen schon ziemlich groß geworden.
Melde mich sobald ich es hin bekommen habe.
Vielen Dank
Bernd
Melde mich sobald ich es hin bekommen habe.
Vielen Dank
Bernd
-
- Beiträge: 607
- Registriert: Di 19. Mai 2015, 20:05
- OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
- CPU-Target: x86_64-linux-gtk2
Re: Wie kopiere ich nicht sichtbare Form in eine Bitmap?
Also scheinbar gehts bei mir schon in der einfachsten Variante nicht. Ich erzeuge eine Form und schiebe diese per Maus halb aus dem Monitor. Der nicht sichtbare Teil wird nicht richtig dargestellt. Mein System: Lazarus 2.0.10 r64667M FPC 3.2.0 x86_64-linux-gtk2. Unter Windows gehts ohne Problem.
Viele Grüße
Bernd
Ergebnis:
Code: Alles auswählen
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormPaint(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
var
bmp: TBitmap;
begin
bmp := TBitmap.Create;
bmp := GetFormImage;
try
bmp.SaveToFile('test.bmp');
finally
bmp.Free;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
width :=800;
height:=800;
end;
procedure TForm1.FormPaint(Sender: TObject);
begin
canvas.Brush.Color:=clRed;
canvas.Rectangle(10,10,780,30);
canvas.Rectangle(10,770,780,790);
end;
end.
Bernd
- Dateianhänge
-
project1.zip
- (126.58 KiB) 119-mal heruntergeladen
Re: Wie kopiere ich nicht sichtbare Form in eine Bitmap?
Mit Ubuntu 20.10 und LMDE4 Cinnamon kann ich das nicht, mit Lubuntu 20.10 (LXQt) dagegen schon reproduzieren, jeweils Laz 2.0.10(64 bit) mit gtk2
-
- Beiträge: 607
- Registriert: Di 19. Mai 2015, 20:05
- OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
- CPU-Target: x86_64-linux-gtk2
Re: Wie kopiere ich nicht sichtbare Form in eine Bitmap?
Danke für die Auskunft!
Ich habe es mit Mint 20 Cinnamon versucht. Offensichtlich mache ich dann aber erst mal nichts falsch.
Ich werde mal noch etwas herumprobieren, vielleicht finde ich ja noch eine Lösung mit der ich das Problem umgehen kann.
Viele Grüße
Bernd
Ich habe es mit Mint 20 Cinnamon versucht. Offensichtlich mache ich dann aber erst mal nichts falsch.
Ich werde mal noch etwas herumprobieren, vielleicht finde ich ja noch eine Lösung mit der ich das Problem umgehen kann.
Viele Grüße
Bernd
- kupferstecher
- Beiträge: 431
- Registriert: Do 17. Nov 2016, 11:52
Re: Wie kopiere ich nicht sichtbare Form in eine Bitmap?
Sowas habe ich auch schon versucht, ging mit GTK2 nicht und wurde im englischen Forum auch so bestätigt. Ich habe dann unter Linux QT als Widgetset ausgewählt, da funktioniert es, auch auf dem Raspi.
-
- Beiträge: 607
- Registriert: Di 19. Mai 2015, 20:05
- OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
- CPU-Target: x86_64-linux-gtk2
Re: Wie kopiere ich nicht sichtbare Form in eine Bitmap?
Danke für die Info. Werde ich dann auch mal so probieren.
Viele Grüße
Bernd
Viele Grüße
Bernd