C# - Nyomtatás a Visual Studio.NET-ben

Nyomtatás 1. rész

forráskód letöltése
Új cikksorozatunk a System.Drawing.Printing névtéren belüli osztályok bemutatását, felhasználási lehetőségeit tűzi ki célul. A sorozat első részében a PrintDocument osztály segítségével történő alapvető nyomtatási funkciókkal ismerkedhetünk meg bevezetésképpen.
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.

Nyomtatás cikksorozat