Autor Beitrag
mimi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: So 29.06.03 13:47 
Hallo,
ich wil ein bild ausdrucken, und der drucker verkleinert die grafik, warum ?

_________________
MFG
Michael Springwald, "kann kein englisch...."
nyx
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Di 14.10.03 01:49 
Weil Röhrenbildschirme in aller Regel eine geringere Anzahl an Bildpunkten pro Zoll oder Zentimeter haben, als Drucker. Wenn Dein Bild beispielsweise 640 x 480 pixel groß ist, bedeutet das in etwa bei den üblichen 72 dpi, die ein Monitor (laut meiner Grafikapplikation) hat, daß das Bild ca. 23 cm breit dargestellt... hust hust.. ich weiß hängt auch von der dargestellten Auflösung und der Bilddiagonalen des Monitors ab. Ich will ja nur mal klugscheißern :D
So und im Gegensatz dazu nimm Deinen Drucker, der vielleicht bei einer Auflösung von 300 dpi druckt. Das bewirkt schlußendlich, daß Dein Bild auf dem Papier nur 5,4 cm breit erscheint.

Gerade in Printsachen muß man zwei Dinge beachten - das zu druckende Bild - muß je nach Qualitätsansprüchen - genügend Pixelinformationen haben und zudem noch die adequate Angabe der dpi-Zahl (dots per inch). Wenn letzteres nicht stimmt, könnts bei einem professionellen Druckereiauftrag ein böses Erwachen geben :wink:
mimi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Di 14.10.03 17:17 
also muss ich die passende größe selbst herrausfinden.
weil ich habe folgendeds gemacht:
ich hahtte eine papier vorlage und diese habe ich auf meine TFT nachgebaut mit Delphi.
wenn ich das bild jetzt aber unter Picture Publisher drucke hat es die richtige größe warum ? und wie bekommt man diese abweichung rauß ?

_________________
MFG
Michael Springwald, "kann kein englisch...."
PheliX
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 59



BeitragVerfasst: Di 14.10.03 18:28 
Hi!

Villeicht hilft dir das ja weiter:


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
uses
printers


function getpix_x(cm:real):integer;
var ppi:Integer;
i:real;
begin
ppi:=  GetDeviceCaps(printer.Handle,LOGPIXELSX);
i:= (ppi * cm) / 2.54;
result:= round(i+0.5);
end;

function getpix_y(cm:real):integer;
var ppi:Integer;
i:real;
begin
ppi:=  GetDeviceCaps(printer.Handle,LOGPIXELSY);
i:= (ppi * cm) / 2.54;
result:= round(i+0.5);
end;


ci@o

Felix
mimi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Mi 15.10.03 17:07 
danke werde ich gleich testen *G*

_________________
MFG
Michael Springwald, "kann kein englisch...."
mimi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Mi 15.10.03 17:56 
wenn ich deine funktionen so benutze:
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:
29:
30:
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  x,y,i:Integer;
begin
  with Image1.Canvas do begin
    ShowMessage(IntToStr(getpix_x(18)));
    for x:=0 to getpix_x(18) do Pixels[x,0]:=clBlack;
    for x:=0 to getpix_x(18) do Pixels[x,getpix_y(7.7)]:=clBlack;

    for y:=0 to getpix_y(7.7) do Pixels[0,y]:=clBlack;
    for y:=0 to getpix_y(7.7) do Pixels[getpix_x(18),y]:=clBlack;

  {  for i:=1 to 30 do
      for y:=0 to 289 do
        Pixels[i*22,y]:=clBlack;

    for x:=0 to 681 do
      Pixels[x,144]:=clBlack;

    for x:=0 to 681 do
      Pixels[x,263]:=clBlack;

    for i:=1 to 61 do
      for y:=263 to 289 do
        Pixels[i*11,y]:=clBlack;

    for x:=0 to 681 do
      Pixels[x,277]:=clBlack;}

  end;
end;

bekomme ich bei der X sachen viel zu große werte rauß. woran kann das liegen ?

_________________
MFG
Michael Springwald, "kann kein englisch...."
PheliX
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 59



BeitragVerfasst: Do 16.10.03 19:28 
Hmmm :?:

Weiß ich jetzt auch nit.. aber wenn dein Drucker auf beiden Seiten die gleiche Auflöduns hat (was weiß ich: 360*360) dann kannst du auch nur die Y Variante nehmen!

Cu

Felix

PS: Ich konnte irgendwie nicht so ganz erkennen was dein Programm machen soll... naja!
mimi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Do 16.10.03 19:56 
gans einfach:
es soll eine beschrieftung für meine CD boxen ausdrucken. mehr nicht.

aber wie schaffe ich das, das ist in der größe ausgedruckt wird in der es auch angezeigt wird ?

Micrografx Picture Publisher 8 schaft dies ja auch

_________________
MFG
Michael Springwald, "kann kein englisch...."
PheliX
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 59



BeitragVerfasst: Do 16.10.03 21:43 
Pass auf: jeder Drucker hat eine verschiedene Auflösung.

Du musst wenn du zum Beispiel ein Etikett drucken willst, das 5 cm breit und 2 cm hoch ist, die Pixels für den Drucker ausrechenen. (Das is n bissel schwer zu erklären :) )

dann gibst du in meine Funtion 2 ein (also 2 cm) dann fragt das Programm die Auflösung des Druckers ab und rechnet dann die Pixelzahl aus.

Also, du machst dann dein Etikett z.B. in ein Canvas uns kopierst das dann auf das DruckerCanvas mit Stretchdraw (oder wie das heißt?!?)

Ich weiß jetzt nit, ob dir das was geholfen hat, aber ich habs versucht *g*
cu
mimi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Fr 17.10.03 18:10 
danke, könnte du noch ein kleines beispiel posten ?
Danke*G*

_________________
MFG
Michael Springwald, "kann kein englisch...."
PheliX
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 59



BeitragVerfasst: Fr 17.10.03 22:15 
Das Beispiel:

ausblenden volle Höhe 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:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls,printers;

type
  TForm1 = class(TForm)
    bt_ellipse: TButton;
    Image1: TImage;
    bt_print: TButton;
    procedure bt_ellipseClick(Sender: TObject);
    procedure bt_printClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

function getpix(cm:real):integer;
var ppi:Integer;
i:real;
begin
ppi:=  GetDeviceCaps(printer.Handle,LOGPIXELSX);
i:= (ppi * cm) / 2.54;
result:= round(i+0.5);
end;

{$R *.dfm}

procedure TForm1.bt_ellipseClick(Sender: TObject);
begin
Image1.Canvas.Ellipse(Image1.ClientRect);
end;

procedure TForm1.bt_printClick(Sender: TObject);
var rect:Trect;
begin
// Also, zuerst das Rechteck für das Etikett der CD boy berechnen

rect.Left:=0; //
              // obere linke Ecke
rect.Top:=0;  //


rect.Right:=getpix(5); // sagen wir einfach mal das das Etikett 5 cm breit ist
rect.Bottom:=getpix(2.5); // damit das Bild nicht verzerrt wird müssen die Breite
                          // un die Länge proportional zu deinem Image sein



with printer do
begin
BeginDoc;
Canvas.StretchDraw(rect,Image1.Picture.Bitmap); //jetzt mit Stretchdraw auf das
                                                //Drucker Canvas
enddoc;
end;
end;

end.



Jetzt wird das wahrscheinlich SEEEEEHR seltsam aussehen.

Wenn du das ganze perfekt machen willst muss du das ganze Bild auf das Canvas proportional zeichnen (getpix)

ich hoffe das hat dir jetzt n bissel geholfen!

Viel Glück

Felix
mimi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Sa 18.10.03 17:02 
also vergrößern wollte ich das bild auch wieder nicht, es soll nur in der orgnial größe angezeigt werden, mehr möchte ich garnicht, das das so schwer ist, hätte ich nie gedacht.

_________________
MFG
Michael Springwald, "kann kein englisch...."