Hallo miteinander,
ich versuche aktuell eine Scrollbox auszudrucken.
Ich habe bereits eine procedure, um die Scrollbox auf die Printer.Canvas zu bekommen, aber beim Ausdrucken ist die übergroße Seite vllt noch 5 cm groß.
Ich würde es gerne auf ne Din A 4 Seite vergrößern. Wenn ich es im PDF-Printer ausdrucke, kann ich in super Qualität bis zur Größe von din A 4 ranzoomen.
Ich hab schon diverses versucht, aber das meiste braucht ein Bitmap zum ausdrucken, das ich ja nicht habe, ebenso ist mir auch keine Kopieren in ein Bitmap gelungen, das ich danach StretchDraw'n könnte, um es dann zu drucken.
Ich hoffe ihr könnt mir hier auf die Sprünge helfen. Danke
Delphi-Quellcode:
procedure TFormKampf.BtnPrintClick(Sender: TObject);
var
PrintDialog : TPrintDialog;
i, breite, hoehe : Integer;
begin
PrintDialog := TPrintDialog.Create(self);
if PrintDialog.Execute then
begin
Printer.BeginDoc;
SetMapMode(Printer.Canvas.Handle,MM_ANISOTROPIC);
breite := GetDeviceCaps(Printer.Canvas.Handle, HORZSIZE);
hoehe := GetDeviceCaps(Printer.Canvas.Handle, VERTSIZE);
ScrollBoxToCanvas(ScrollBox1,Printer.Canvas) ;
Printer.EndDoc;
end;
end;
procedure TFormKampf.ScrollBoxToCanvas(ScrollBox:TScrollBox; Canvas:TCanvas);
var saveY, Y, SchrittY:integer;
saveX, X, SchrittX:integer;
abbruchY, abbruchX:boolean;
saveBorderStyle:TBorderStyle;
begin
saveY:=ScrollBox.VertScrollBar.Position;
saveX:=ScrollBox.HorzScrollBar.Position;
saveBorderStyle:=ScrollBox.BorderStyle;
ScrollBox.BorderStyle:=bsNone;
ScrollBox.VertScrollBar.Position:=0;
Y:=0;
SchrittY:=ScrollBox.Height-100;
repeat
ScrollBox.HorzScrollBar.Position:=0;
X:=0;
SchrittX:=ScrollBox.Width-100;
abbruchY:=(ScrollBox.VertScrollBar.Position <> Y);
repeat
abbruchX:=(ScrollBox.HorzScrollBar.Position <> X);
ScrollBox.Refresh;
ScrollBox.PaintTo(Canvas,ScrollBox.HorzScrollBar.Position,
ScrollBox.VertScrollBar.Position);
ScrollBox.HorzScrollBar.Position:=ScrollBox.HorzScrollBar.Position + SchrittX;
X:=X+SchrittX;
until abbruchX;
ScrollBox.VertScrollBar.Position:=ScrollBox.VertScrollBar.Position + SchrittY;
Y:=Y+SchrittY;
until abbruchY;
ScrollBox.VertScrollBar.Position:=saveY;
ScrollBox.HorzScrollBar.Position:=saveX;
ScrollBox.BorderStyle:=saveBorderStyle;
end;