![]() |
Canvas an Drucker senden und drucken
Hallo,
ich hab ein kleines Problem: Wie kann man ein Canvas ausdrucken? Ich hab es so probiert:
Delphi-Quellcode:
Dabei musst ich leider feststellen, dass das Canvas des Printers nur zum lesen da ist.
begin
Printer.BeginDoc; Printer.Canvas := MeinTImage.Canvas; Printer.EndDoc; end; Wie kann man das denn anderst lösen? |
Re: Canvas an Drucker senden und drucken
Delphi-Quellcode:
begin
Printer.BeginDoc; MeinTImage.PaintTo(Printer.Canvas.Handle, 100, 100); // da aber die Pixels deines Images auf dem Drucker 1 zu 1 umgesetzt werden // wird dein Bild recht klein werden Printer.EndDoc; end; |
Re: Canvas an Drucker senden und drucken
Delphi-Quellcode:
Das funktioniert auf das ganze Blatt passend...
var Printer:TPrinter;
begin Printer:=TPrinter.Create; with Printer do begin Orientation:=poLandscape; BeginDoc; Refresh; Canvas.CopyMode:=cmSrcCopy; Canvas.CopyRect(Rect(0,0,PageWidth,PageHeight), Zeichenfenster.Canvas, Rect(0,0,560,450)); EndDoc; Destroy; end; end; |
Re: Canvas an Drucker senden und drucken
Cool thx.
Funkt das auch bei Laserdrckern??? hab gehört, dass ein Laserdrucker die Befhle anderst interpretiert! |
Re: Canvas an Drucker senden und drucken
Kanns leider nicht ausprobieren aber ich würde mal davon ausgehen...
Vielleicht ändern sich die Farben etwas... :gruebel: |
Re: Canvas an Drucker senden und drucken
MeinTImage.PaintTo(Printer.Canvas.Handle, 100, 100);
Ich finde keine Methode PaintTo in TImage? mytar |
Re: Canvas an Drucker senden und drucken
|
Re: Canvas an Drucker senden und drucken
Danke!
Aber kann mir niemand zu "PaintTo" weiterhelfen? |
Re: Canvas an Drucker senden und drucken
ich glaube nicht STRECHDRAW sondern STRETCHDRAW.
Bei mir hat nichts geklappt. Statt immer alles auszudrucken, und den Drucker hab ich am anderen PC, drucke ich einfach alles als PDF-Datei. Das Dokument ist immer weiß. Nochmals: Ich hab in meinen TImage etwas gezeichnet. Ich möchte nun das ganze Image ausdrucken, und davor noch etwas hineinschreiben. Das Hineinschreiben funktioniert, ja mit TextOut(..), das passt. Aber das Image bringe ich einfach nichts in den Printer? was soll ich machen? |
Re: Canvas an Drucker senden und drucken
Zitat:
Der PDF-Treiber kann nicht alle GDI Funktionen korrekt umsetzen. Du müsstest mal das PixelFormat des Image verändern: Image1.Picture.Bitmap.PixelFormat := pf8bit; |
Re: Canvas an Drucker senden und drucken
@shmia:
Zitat:
|
Re: Canvas an Drucker senden und drucken
Zitat:
Die Methode PaintTo gibt es nur bei WinControls. Und da TImage von TGraphicControl abgeleitet ist, muss man dort mit TGraphicControl.Canvas arbeiten. Damit habe ich eine Procedure gebaut, die jedes Control zeichnen kann:
Delphi-Quellcode:
type
TGC_cracker = class(TGraphicControl) // Hilfsklasse, wg. Zugriff auf protected Properties end; procedure PaintControlToCanvas(control:TControl; Canvas:TCanvas; x,y:Integer); var dest, src : TRect; begin Assert(Assigned(control)); Assert(Assigned(canvas)); if control is TWinControl then TWinControl(control).PaintTo(Canvas.Handle, x, y) else if control is TGraphicControl then begin src := control.ClientRect; dst := src; OffsetRect(dest, x, y); Canvas.CopyRect(dest, TGC_cracker(control).Canvas, src); end else Assert(False, 'PaintControlToCanvas(: Control-Class not supported'); end; |
Re: Canvas an Drucker senden und drucken
Super, ich werds gleich testen
mytar |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:07 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-2025 by Thomas Breitkreuz