Hallo,<br>
<br>
ich habe eine Druckvorschau mit einer image.canvas realisiert. Das Koordianatensystem habe ich mit;
<br><br>
druckbreite := GetDeviceCaps(printer.handle,horzsize);<br>
druckhoehe := GetDeviceCaps(printer.handle,vertsize);<br>
<br>
druckbreite:=druckbreite;<br>
druckhoehe:=druckhoehe;<br>
<br>
ux:=0;uy:=0;dx:=druckbreite;dy:=druckhoehe;<br>
pb1.setbounds(ux,uy,trunc(dx*zoom),trunc(dy*zoom)) ;<br>
pencolor := pb1.canvas.pen.color;<br>
fillcolor := pb1.canvas.brush.color;<br>
setmapmode(pb1.canvas.handle,mm_anisotropic);<br>
SetWindowExtex(pb1.canvas.handle,druckbreite*10,-(druckhoehe*10),NIL);<br>
setviewportextex(pb1.canvas.handle,trunc(dx*zoom), trunc(dy*zoom),NIL);<br>
<br>
initialisiert.<br>
<br>
danach habe ich versucht mit:<br>
<br><br>
DestinationRect := Rect(0,0,10000,10000);<br>
SourceRect := Rect(0,0,1000,1000);<br>
<br>
PrintDialog:=TPrintDialog.Create(self);<br>
if PrintDialog.Execute then<br>
begin<br>
Printer.BeginDoc;<br>
SetMapMode(printer.canvas.handle,MM_LOMETRIC);<br>
printer.canvas.CopyRect(DestinationRect,pb1.Canvas ,SourceRect);<br>
Printer.Enddoc;<br>
end; //if PrintDialog.Execute<br>
PrintDialog.Free;<br>
<br>
zu drucken.<br>
<br>
Aber wenn ich SetMapMode(printer.canvas.handle,MM_LOMETRIC) verwende erscheint garnichts.
Wenn ich es weglasse bekomme ich einen Miniaturausdruck.<br><br>
Oben habe ich sourceRect 10 mal kleiner gewählt als DestinationRect, damit das Bild vergrößert wird.
Das Ergebnis ist aber sehr viele unschöne Kanten. Wie kann ich das Bild von pb1.canvas eins zu eins in printer.canvas
übernehmen?
<br>
ich habe eine Druckvorschau mit einer image.canvas realisiert. Das Koordianatensystem habe ich mit;
<br><br>
druckbreite := GetDeviceCaps(printer.handle,horzsize);<br>
druckhoehe := GetDeviceCaps(printer.handle,vertsize);<br>
<br>
druckbreite:=druckbreite;<br>
druckhoehe:=druckhoehe;<br>
<br>
ux:=0;uy:=0;dx:=druckbreite;dy:=druckhoehe;<br>
pb1.setbounds(ux,uy,trunc(dx*zoom),trunc(dy*zoom)) ;<br>
pencolor := pb1.canvas.pen.color;<br>
fillcolor := pb1.canvas.brush.color;<br>
setmapmode(pb1.canvas.handle,mm_anisotropic);<br>
SetWindowExtex(pb1.canvas.handle,druckbreite*10,-(druckhoehe*10),NIL);<br>
setviewportextex(pb1.canvas.handle,trunc(dx*zoom), trunc(dy*zoom),NIL);<br>
<br>
initialisiert.<br>
<br>
danach habe ich versucht mit:<br>
<br><br>
DestinationRect := Rect(0,0,10000,10000);<br>
SourceRect := Rect(0,0,1000,1000);<br>
<br>
PrintDialog:=TPrintDialog.Create(self);<br>
if PrintDialog.Execute then<br>
begin<br>
Printer.BeginDoc;<br>
SetMapMode(printer.canvas.handle,MM_LOMETRIC);<br>
printer.canvas.CopyRect(DestinationRect,pb1.Canvas ,SourceRect);<br>
Printer.Enddoc;<br>
end; //if PrintDialog.Execute<br>
PrintDialog.Free;<br>
<br>
zu drucken.<br>
<br>
Aber wenn ich SetMapMode(printer.canvas.handle,MM_LOMETRIC) verwende erscheint garnichts.
Wenn ich es weglasse bekomme ich einen Miniaturausdruck.<br><br>
Oben habe ich sourceRect 10 mal kleiner gewählt als DestinationRect, damit das Bild vergrößert wird.
Das Ergebnis ist aber sehr viele unschöne Kanten. Wie kann ich das Bild von pb1.canvas eins zu eins in printer.canvas
übernehmen?