Entwickler-Ecke
Multimedia / Grafik - Hardcopy
Zemke - Mi 30.10.02 15:55
Titel: Hardcopy
Ich habe folgendes Problem:
Von meinem laufenden Programm möchte ich eine Hardcopy machen. Dies geht auch mit dem Befehl formx.print. Allerdings wird der Bildschirm hier so gedruckt, wie er angezeigt wird (ist ja auch Sinn und Zweck des Befehls). Nun möchte ich aber, daß der Hintergrund (bei mir Windows-grau) nicht gedruckt wird, sondern nur die Eingabefelder, Tabellen usw.. Ich habe mir eine Zwischenlösung ausgedacht, die mich allerdings nicht zufriedenstellt: Bevor gedruckt wird, schalte ich den Hintergrund auf weiß und danach wieder zurück auf Windows-grau. Z. B. wird der Status-Bar dann trotzdem noch grau gedruckt.
Wer kann mir helfen?
Gruß
Rainer Zemke
CenBells - Mi 30.10.02 20:17
also einfach nur den inhalt in den eingabefeldern?
benutz die funktion
printer und
printer.canvas.textout
gruß
Ken
Zemke - Sa 23.11.02 16:39
Titel: Canvas.textout
Hallo,
ich habe es mit canvas.textout probiert, es mir aber zu umständlich. Gibt es nicht irgendeinen Befehl, der den Hintergrund des aktiven Fensters entweder transparent macht oder daß der Drucker angewiesen wird, nur die Texte und Zahlen vom Formular zu drucken?
Gruß
Zemke
Wolff68 - Sa 23.11.02 16:57
Also so wie die Druck-Taste den ganzen Bildschirm ausdruckt, und Alt+Druck nur das aktive Fenster?
Lösung fällt mir aber dazu auch grad nicht ein... :oops:
Vielleicht kann man ja Windows ein Alt+Druck senden?
Danach wäre der Bildschirminhalt im Zwischenspeicher,...
bis11 - Sa 23.11.02 22:58
Und was haltet Ihr davon ?
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39:
| procedure ScreenShot(Bild: TBitMap); var c : TCanvas; r : TRect; begin c:= TCanvas.Create; c.Handle := GetWindowDC (GetDesktopWindow); try r := Rect(0,0,screen.width,screen.height); Bild.Width := screen.Width; Bild.Height := screen.Height; Bild.Canvas.CopyRect(r, c, r); finally ReleaseDC(0,c.handle); c.Free; end; end;
procedure ScreenShotActiveWindow(Bild: TBitMap); var c : TCanvas; r, t : TRect; h : THandle; begin c := TCanvas.Create; c.Handle := GetWindowDC(GetDesktopWindow); h := GetForeGroundWindow; if h<>0 then GetWindowRect(h, t); try r := Rect(0,0,t.Right-t.left, t.Bottom-t.Top); Bild.Width := t.Right-t.left; Bild.Height := t.Bottom-t.Top; Bild.Canvas.CopyRect(r, c, t); finally ReleaseDC(0, c.handle); c.Free; end; end; |
Aufgerufen wird folgendermaßen :
ScreenShot(Image1.Picture.BitMap);
ScreenShotActiveWindow(Image1.Picture.BitMap);
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!