C# - Postai ajánlott szelvény kitöltése számítógéppel

Nyomtatás 4. rész

forráskód letöltése
Nyomtatás sorozatunk mostani részében egy gyakorlati feladatot valósítunk meg, ahol egy postai ajánlott szelvény kitöltésére nyílik lehetőség. Ennek megvalósításához pontosan kell pozícionálnunk a nyomtatandó szövegeket, mivel itt egy előre nyomtatott papírról van szó, melyen kötöttek a helyek, ahová írnunk kell.
A szelvényre kerülő információt a felhasználók TextBox-okon keresztül, illetve CheckBox-ok megjelölésével adhatják meg. Nyomtatás megkezdésekor ezeket az információkat kell a papírra írnunk a megfelelő pozícióba.
    private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
    {
      Graphics g = e.Graphics;
      Font f = new Font("Verdana", 8);
      Pen p = new Pen(Color.Black, 0.4f);
      SolidBrush b = new SolidBrush(Color.Black);
Ezeket a pozíciókat egyszerűen lemérhetjük és így milliméterben rendelkezésünkre állnak azon koordináták, melyekre a szövegeket írni kell. Csakhogy a Graphics osztályban alapértelmezés szerint pixelben adhatók meg az értékek. Bonyolult számítgatások helyett állítsuk át ezt az alapértelmezést és így nem kell milliméterről pixelre konvertálnunk az értékeket. Ehhez a Graphics osztály PageUnit property-je használható.
      g.PageUnit = GraphicsUnit.Millimeter;
Fontos még bevezetnünk két változót, melyben megadhatunk egy x, y irányú eltérést. E két számot minden koordinátához hozzáadjuk, mert gyakorlati tapasztalat alapján elmondható, hogy ritka, amikor a postán két egyforma szelvényt kapunk, ha azokat nem egy időben hozzuk el. Néhány milliméteres eltérés is előfordulhat a szelvény szélétől számítva. Ezt viszont e két változó bevezetésével könnyen korrigálhatjuk.
      int ox = -3;
      int oy = -3;
Ezt követően már nem marad más hátra, mint a megfelelő pozíciókba történő szöveg kiírás, ahol figyelembe vesszük az imént bevezetett két változó értékét is.
      g.DrawString(textBox1.Text, f, b, ox+35, oy+27);
      g.DrawString(textBox2.Text, f, b, ox+35, oy+31.5f);
      ...
CheckBox-ok értékeinek megjelenítéséhez két vonalat rajzolunk a megfelelő pozícióba, mely egy X alakú ábrát fog adni.
      if (checkBox1.Checked)
      {
        g.DrawLine(p, ox+33.5f, oy+43f, ox+36.5f, oy+46f);
        g.DrawLine(p, ox+36.5f, oy+43f, ox+33.5f, oy+46f);
      }

Nyomtatás cikksorozat