Το PrintDocument δεν έχει properties BackColor, ForeColor, BackgroundImage κλπ όπως η φόρμα. Για να τυπώσεις μία σελίδα θα πρέπει στο PrintPage event να ζωγραφίσεις κατευθείαν στο αντικείμενο Graphics που σου δείνει το PrintEventArgs.
Ο παρακάτω κώδικας ζωγραφίζει μια εικόνα και από πάνω της ένα string και μια έλλειψη. :
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
e.PageSettings.Landscape=(pageCount==2);
e.Graphics.DrawImage(img,e.MarginBounds);
e.Graphics.DrawString("Hello World!",new Font ("Batang",36),Brushes.Black,30,30);
e.Graphics.DrawEllipse(Pens.Yellow,e.MarginBounds);
if (e.PageSettings.Landscape)
e.Graphics.DrawRectangle(Pens.Black,e.MarginBounds);
e.HasMorePages=(--_pageCount>0);
}
Πρόσεξε το HasMorePages και το PageSettings.Landscape. Πριν αρχίσω την εκτύπωση, έχω περάσει τον αριθμό των σελίδων στο πεδίο _pageCount. Την δεύτερη σελίδα θα την τυπώσω σαν Landscape. Κάθε φορά που τυπώνεται μια σελίδα, μειώνω τον αριθμό των σελίδων που μένουν. Μόλις φτάσουν στο 0, το HasMorePages γίνεται false και η εκτύπωση σταματάει.
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos