| Autor |
Beitrag |
Sabine
      
Beiträge: 40
Delphi 7
|
Verfasst: Do 03.03.05 15:52
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; |
Zuletzt bearbeitet von Sabine am Fr 04.03.05 12:21, insgesamt 1-mal bearbeitet
|
|
jasocul
      
Beiträge: 6395
Erhaltene Danke: 149
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: 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 
      
Beiträge: 40
Delphi 7
|
Verfasst: 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
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: 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.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Sabine 
      
Beiträge: 40
Delphi 7
|
Verfasst: 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
      
Beiträge: 99
Win 2000, WinXP
Delphi 5 Enterprise
|
Verfasst: Mo 07.03.05 12:54
Versuchs doch mal so....
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; |
_________________ Ein Kreis ist ein rundes Quadrat
|
|
Sabine 
      
Beiträge: 40
Delphi 7
|
Verfasst: Mo 07.03.05 12:57
Hy Erzengel vielen Dank für deine Hilfe.
Es geht jetzt.... 
|
|
|