Hány pixel egy adott méretű papír?

Hány pixel egy adott méretű papír?
2005-06-23T14:53:07+02:00
2005-07-04T11:38:03+02:00
2022-10-25T18:15:44+02:00
hnorbi
A PageSetupDialog-on kiválasztok egy adott méretű papírt. Legyen ez most az A4-es. Hogy tudom meg, hogy ez a papír hány pixel széles és magas. Azért kellene, mert van egy képnéző progim, aminek a különböző nyomtatási opcióihoz kellene. Virtuálisan a két felezővonal négy részre osztja a papírt, és pl. as jobb alsó negyedbe nyomtat(na) méretarányosan. De ehhez tudni kell, hogy mekkora a papír.
Mutasd a teljes hozzászólást!
egyébbként az eredeti kérdésedre válaszolva:

Printer.PageWidth
Printer.PageHeight

Valamint Szerintem Nem kell tudni hány pixel a papír a nyomtatáshoz:

Uses Math;
..........
Procedure TForm1.Button1Click(Sender: TObject);
var
Eredmeny, Maradek: word;
Rt: TRect;
begin
Printer.BeginDoc;
DivMod(Printer.PageWidth,2,Eredmeny,Maradek);
Rt.Left := Eredmeny;
DivMod(Printer.PageHeight,2,Eredmeny,Maradek);
Rt.Top := Eredmeny;
Rt.Right := Printer.PageWidth;
Rt.Bottom := Printer.PageHeight;
try
Printer.Canvas.StretchDraw(Rt,Image1.Picture.Graphic);
except
Printer.Abort;
end;
Printer.EndDoc;
end;

így az általad választott képet a jobb oldalra a lap 1/4-ére nyomtatja.
Mutasd a teljes hozzászólást!

  • Mekkora felbontásban? Egyébként:

    h = 297/25.4*dpi w = 210/25.4*dpi

    Ahol dpi a pixelek száma egy inchen
    Mutasd a teljes hozzászólást!
  • property printer.PageHeight: Integer;
    Mutasd a teljes hozzászólást!
  • Ez nem pixel, hanem asszem milliméterben a méret...
    Mutasd a teljes hozzászólást!
  • Két kérdés:
    1. mi az a 25.4?
    2. Hogy kérdezem le, hogy haány DPI-s a nyomtató?
    Mutasd a teljes hozzászólást!

  • ndicates the height (in pixels) of the currently printing page.

    Delphi syntax:

    property PageHeight: Integer;

    C++ syntax:

    __property int PageHeight = {read=GetPageHeight, nodefault};

    Description

    Use PageHeight to find the height in pixels of the currently printing page.


    Szép dolog a hit, de én jobban szeretem a helpet...
    Mutasd a teljes hozzászólást!
  • A felbontás ügyben nézd meg ezt.
    De amúgy a google igen nagy segítség tud ám lenni...
    Mutasd a teljes hozzászólást!
  • én nem foglalkoznék vele, hogy hány pixel a papír + nem olyan egyszerű lekérdezni a nyomtató felbontását + csak baj van vele én inbkább javaslom használj nyomtatáskor mm-es méreteket így minden nyomtatón ugyanúgy néz ki a felbontástól függően itt van egy példa egy kép 12.1 x 12.1 cm-es nyomtatására.

    teljesen működő tesztelt:

    unit Unit1;

    interface

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

    type
    TForm1 = class(TForm)
    Button1: TButton;
    Image1: TImage;
    OpenPictureDialog1: TOpenPictureDialog;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;

    var
    Form1: TForm1;

    implementation

    {$R *.dfm}
    //******** nyomtatás *********
    procedure TForm1.Button1Click(Sender: TObject);
    var
    Rect: TRect;
    begin

    Printer.BeginDoc;
    SetmapMode(Printer.Canvas.Handle,MM_LOMETRIC);// méretek mm-be állítása
    Rect.Left := 40; //margó 4mm
    Rect.Top := -40; //szintén
    Rect.Right := Rect.Left + 1210;
    Rect.Bottom := Rect.Top + (-1210);

    try // a strechDraw a megadott téglalapba kifeszíti a nyomtatandó képet
    Printer.Canvas.StretchDraw(Rect,Image1.Picture.Graphic);
    Printer.EndDoc;
    except
    Printer.Abort;
    end;


    end;
    //******** megnyitás ********
    procedure TForm1.Button2Click(Sender: TObject);
    begin
    if OpenPictureDialog1.Execute then
    Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
    end;

    end.
    Mutasd a teljes hozzászólást!
  • 1. 25.4 mm == 1 inch
    2. passz
    Mutasd a teljes hozzászólást!

  • h = 297/25.4*dpi
    w = 210/25.4*dpi

    Két kérdés:
    1. mi az a 25.4?
    2. Hogy kérdezem le, hogy haány DPI-s a nyomtató?


    1. 297 mm = az A4-es papír hossza, 25.4 mm = 1 inch DPI = Dot Per Inch, azaz a nyomtatási felbontás mértékegysége => h = kb. 11 inch * nyomtató felbontás. Ennyi pixel az A4-es kép magassága. 2. Biztosan le lehet kérdezni valahogy, nem tudom. Általában 300 dpi-re van állítva, de gyakran 600 (lézerprinterrel finomabb grafikához). Újabbaknál 1200 is lehet. Vázlatminőség esetén 75 dpi.
    Mutasd a teljes hozzászólást!
  • én csak anyit fűznék hozzá... az egy dolog, hogy az a/4-es lap 275x210mm csakhogy a nyomtatónak megvannak a fizikai határai ahová nyomtatni tud ez változó minden nyomtatónál tintasugarasoknál kisebb a margó lézernél nagyobb akár egy centi is lehet...
    Mutasd a teljes hozzászólást!
  • Ez így van... sajnos.
    Mutasd a teljes hozzászólást!
  • OK, hogy vannak nyomtatási határok. Nekem a Lexmark Z25-ös (tintasugaras) az A/4 a szélső és a felső szélétől akár 1 mm-re is nyomtat. Alul asszem fél centi a határ, de az is csak azért, mert a papírtovábbító görgető tovább nem tudja adagolni.
    Ez csak megjegyzés...
    Mutasd a teljes hozzászólást!
  • egyébbként az eredeti kérdésedre válaszolva:

    Printer.PageWidth
    Printer.PageHeight

    Valamint Szerintem Nem kell tudni hány pixel a papír a nyomtatáshoz:

    Uses Math;
    ..........
    Procedure TForm1.Button1Click(Sender: TObject);
    var
    Eredmeny, Maradek: word;
    Rt: TRect;
    begin
    Printer.BeginDoc;
    DivMod(Printer.PageWidth,2,Eredmeny,Maradek);
    Rt.Left := Eredmeny;
    DivMod(Printer.PageHeight,2,Eredmeny,Maradek);
    Rt.Top := Eredmeny;
    Rt.Right := Printer.PageWidth;
    Rt.Bottom := Printer.PageHeight;
    try
    Printer.Canvas.StretchDraw(Rt,Image1.Picture.Graphic);
    except
    Printer.Abort;
    end;
    Printer.EndDoc;
    end;

    így az általad választott képet a jobb oldalra a lap 1/4-ére nyomtatja.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd