Autor Beitrag
Sabine
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 40


Delphi 7
BeitragVerfasst: 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:

ausblenden 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;     { Beginn des Druckens }
    Canvas.Draw(153,209,Image1.Picture.Bitmap);  
    EndDoc;       { Ende des Druckens }  
  end



end;


Zuletzt bearbeitet von Sabine am Fr 04.03.05 12:21, insgesamt 1-mal bearbeitet
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 40


Delphi 7
BeitragVerfasst: 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


ausblenden 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;     { Beginn des Druckens }

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;       { Ende des Druckens }
  end;
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 40


Delphi 7
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 99

Win 2000, WinXP
Delphi 5 Enterprise
BeitragVerfasst: Mo 07.03.05 12:54 
Versuchs doch mal so.... :P

ausblenden 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;     { Beginn des Druckens }

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;       { Ende des Druckens }
  end;

end;

_________________
Ein Kreis ist ein rundes Quadrat
Sabine Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 40


Delphi 7
BeitragVerfasst: Mo 07.03.05 12:57 
Hy Erzengel vielen Dank für deine Hilfe.
Es geht jetzt.... :oops: