سلام
اول یه کنترل printDocument به فرم اضافه می کنید (drag and drop) بعد در رویداد printPageش کدهایی مثل کد زیر می نویسید:
//نوشته ها و خطوط را حرفه ای تر می کند
e.Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
//چیدمان نوشته
StringFormat strFormat = new StringFormat();
//far: right near: left
strFormat.Alignment = StringAlignment.Far;
//رنگ پس زمینه برای نوشته
var rect = new RectangleF(this.Location.X, this.Location.Y, this.Width, this.Height);
e.Graphics.FillRectangle(Brushes.Yellow, rect);
//متن
e.Graphics.DrawString(this.Text, this.Font, Brushes.Black, this.Location.X, this.Location.Y);
e.HasMorePages = false;
در یک دکمه هم کدهای زیر رو می نویسید تا لیست پرینترها باز بشه و کاغذ بره برای چاپ:
using (PrintDialog pd = new PrintDialog())
{
if (pd.ShowDialog() == DialogResult.OK)
printDocument1.PrinterSettings = pd.PrinterSettings;
printDocument1.Print();
}
در کد بالا متن فرم رو برای چاپ فرستادیم، رنگ پس زمینه ها انتخاب کردیم، شما می تونید با استفاده از e.Graphics... هر شکلی مثل مستطیل، دایره، خط، منحنی، عکس و ... رو برای چاپ بفرستید.
البته می تونید printPreviewControl هم برای پیش نمایش به کاربر استفاده کنید.