A új project megnyitása után a Properties ablak Windows Forms lapjáról tegyünk egy PrintDocument komponenst a Form-ra. A nyomtatási munkánk megnevezését a komponens DocumentName property-jében adhatjuk meg. A mellékelt példában itt a „First document” szöveget adtuk meg. Amikor a nyomtatást elindítjuk, akkor a Windows nyomtató menedzserében a nyomtatandó dokumentum megnevezésénél lesz látható ez a sztring.
Nézzük miként történik a nyomtatás. Első lépésben a Print függvény hívásával jeleznünk kell a nyomtatási szándékunkat.
private void button1_Click(object sender, System.EventArgs e)
{
printDocument1.Print();
}
A nyomtatási képet úgy tudjuk megadni, hogy amikor a létrejön a PrintDocument PrintPage eseménye, akkor a paraméterként kapott Graphics osztályt felhasználva egy tetszőleges grafikai objektumot hozunk létre. Ez tartalmazhat szöveget, vagy bármilyen egyéb rajzot, amit csak a Graphics segítségével el tudunk készíteni.
Az esemény „e” paramétere Graphics property-jében találjuk a Graphics osztályt.
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
Graphics g = e.Graphics;
Az „e” paraméter még több osztályt is rejt, melyek hasznosak lehetnek számunkra a grafikánk elkészítésekor. A PageBounds property-ben kapjuk meg Rectangle típusban, hogy mekkora az a téglalap, mely az adott papírlapon a nyomtatható területet fedi le. E területen kívül az adott nyomtató nem képes semmit kinyomtatni.
g.DrawRectangle(new Pen(Color.Black, 1), e.PageBounds);
g.DrawString("PageBounds: "+e.PageBounds.ToString(), new Font("Verdana", 9), new SolidBrush(Color.Black), e.PageBounds.Left, e.PageBounds.Top);
Ehhez hasonlóan az aktuális margó méreteit szintén Rectangle típusban megtudhatjuk a MarginBounds property-ből.
g.DrawRectangle(new Pen(Color.Black, 1), e.MarginBounds);
g.DrawString("MarginBounds: "+e.MarginBounds.ToString(), new Font("Verdana", 9), new SolidBrush(Color.Black), e.MarginBounds.Left, e.MarginBounds.Top);
}
Ha az „e” paraméter Cancel property-ét igazra állítanánk, akkor ezzel megszakítanánk az adott nyomtatási munkát.
Ha nyomtatási munkánk nem egy oldalból áll, akkor az „e” paraméter HasMorePages property-ét igazra kell állítanunk. Ekkor újra generálódik egy PrintPage esemény, ahol elvégezhetjük a következő oldal kinyomtatását is. Ezt mindaddig ismételjük, amíg csak van nyomtatandó oldalunk.
A PageSettings property-n keresztül a nyomtatandó oldal beállításait érhetjük el. Ez a property PageSettings osztály típusú. Erre a típusra a sorozatunkban még részletesebben visszatérünk.