| Autor |
Beitrag |
mimi
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: 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
|
Verfasst: 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
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 
|
|
mimi 
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: 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
      
Beiträge: 59
|
Verfasst: Di 14.10.03 18:28
Hi!
Villeicht hilft dir das ja weiter:
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 
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: Mi 15.10.03 17:07
danke werde ich gleich testen *G*
_________________ MFG
Michael Springwald, "kann kein englisch...."
|
|
mimi 
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: Mi 15.10.03 17:56
wenn ich deine funktionen so benutze:
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;
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
      
Beiträge: 59
|
Verfasst: 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 
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: 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
      
Beiträge: 59
|
Verfasst: 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 
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: Fr 17.10.03 18:10
danke, könnte du noch ein kleines beispiel posten ?
Danke*G*
_________________ MFG
Michael Springwald, "kann kein englisch...."
|
|
PheliX
      
Beiträge: 59
|
Verfasst: Fr 17.10.03 22:15
Das Beispiel:
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 public 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
rect.Left:=0; rect.Top:=0;
rect.Right:=getpix(5); rect.Bottom:=getpix(2.5);
with printer do begin BeginDoc; Canvas.StretchDraw(rect,Image1.Picture.Bitmap); 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 
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: 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...."
|
|