Entwickler-Ecke
Sonstiges (Delphi) - Drucken eines Images viel zu klein WARUM???
Sabine - Do 03.03.05 15:52
Titel: Drucken eines Images viel zu klein WARUM???
Hallo Ihr lieben,
ich bin durch eure Hilfe jetzt zum Ende gekommen mit meinem Programm.
Aber eines beschäftigt mich noch.
Wenn ich mein Image drucke kommt es immer zu klein aus dem Drucker raus und nicht wie angezeigt in der Form (0.5mm x 0.5mm)
Ich brauch das aber 4cm x 3,5 cm.
Weis da einer Rat???
So drucke ich das Image:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| procedure TForm_Haupt.Button1Click(Sender: TObject); begin
with Printer do begin BeginDoc; Canvas.Draw(153,209,Image1.Picture.Bitmap); EndDoc; end;
end; |
jasocul - Do 03.03.05 16:21
Der Ausdruck hängt von der Auflösung des Druckers ab (DPI). Darauf hatte ich schon im anderen Thred hingewiesen.
Leider ist es bei mir schon ein paar Jahre her, dass ich TPrinter benutzt haben. Ich meine aber, dass man das mit SetDeviceCaps einstellen kann.
Sabine - Fr 04.03.05 11:08
Hallo Ihr lieben,
ich komme nicht mehr weiter
jetzt erscheind bei mir nur noch eine leer Seite aus dem Drucker
Delphi-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:
| procedure TForm_Haupt.Button1Click(Sender: TObject); var xdpi, ydpi : extended; x, y,a,b :integer;
begin
with Printer do begin BeginDoc;
xdpi:=GetDeviceCaps(Printer.Handle,LOGPIXELSX)/2.54; ydpi:=GetDeviceCaps(Printer.Handle,LOGPIXELSY)/2.54;
a:= 500; b:= 500; x:= 150; y:= 250;
Printer.Canvas.StretchDraw(RECT(X,Y,ROUND(X+xdpi*a),ROUND(Y+ydpi*b)),Image1.Picture.Graphic);
EndDoc; end; |
BenBE - Fr 04.03.05 14:07
Wenn die Ausgabe bei Canvas zu groß ist, schlägt der BitBlt-Aufruf, der für die entgültige Darstellung zuständig ist, fehl. Teil das auszugebende Bild in mehrere kleine Bilder auf.
Siehe auch in der W32OH unter BitBlt, welche inschränkungen gelten. Gleiches gilt z.B. auch für die Rechtecksfunktion von Windows.
Sabine - Mo 07.03.05 09:18
| Zitat: |
Wenn die Ausgabe bei Canvas zu groß ist, schlägt der BitBlt-Aufruf, der für die entgültige Darstellung zuständig ist, fehl. Teil das auszugebende Bild in mehrere kleine Bilder auf.
Siehe auch in der W32OH unter BitBlt, welche inschränkungen gelten. Gleiches gilt z.B. auch für die Rechtecksfunktion von Windows. |
Kann mir das mal einer Erklären so das ich das als Änfängerin auch versteh???
Erzengel - Mo 07.03.05 12:54
Versuchs doch mal so.... :P
Delphi-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:
| procedure TForm_Haupt.Button1Click(Sender: TObject); var xdpi, ydpi : extended; x, y,a,b :integer;
begin
with Printer do begin BeginDoc;
xdpi:=GetDeviceCaps(Printer.Handle,LOGPIXELSX)/2.54; ydpi:=GetDeviceCaps(Printer.Handle,LOGPIXELSY)/2.54;
a:= 5; b:= 5; X:= 1; Y:= 4;
Canvas.StretchDraw(RECT(X,Y,ROUND(X+xdpi*a),ROUND(Y+ydpi*b)),Image1.Picture.Graphic);
EndDoc; end;
end; |
Sabine - Mo 07.03.05 12:57
Hy Erzengel vielen Dank für deine Hilfe.
Es geht jetzt.... :oops:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 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!