Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#12

Re: Canvas an Drucker senden und drucken

  Alt 15. Jul 2004, 16:52
Zitat von mytar:
Ich denke bei TImage gibt es keine PaintTo-Methode, oder doch?
Hey, du hat ja recht.
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;
Andreas
  Mit Zitat antworten Zitat