Print Panel in Windows Form C#
c#, visual-studio-2010, winforms
Solution
I have found following code which is working perfectly!!
//declare event handler for printing in constructor
printdoc1.PrintPage += new PrintPageEventHandler(printdoc1_PrintPage);
//Rest of the code
Bitmap MemoryImage;
public void GetPrintArea(Panel pnl)
{
MemoryImage = new Bitmap(pnl.Width, pnl.Height);
pnl.DrawToBitmap(MemoryImage, new Rectangle(0, 0, pnl.Width, pnl.Height));
}
protected override void OnPaint(PaintEventArgs e)
{
if (MemoryImage != null)
{
e.Graphics.DrawImage(MemoryImage, 0, 0);
base.OnPaint(e);
}
}
void printdoc1_PrintPage(object sender, PrintPageEventArgs e)
{
Rectangle pagearea = e.PageBounds;
e.Graphics.DrawImage(MemoryImage, (pagearea.Width / 2) - (this.panel1.Width / 2), this.panel1.Location.Y);
}
public void Print(Panel pnl)
{
pannel = pnl;
GetPrintArea(pnl);
previewdlg.Document = printdoc1;
previewdlg.ShowDialog();
}
private void button1_Click(object sender, EventArgs e)
{
Print(this.panel1);
}
Problem
I have a situation here. I need to create an employee card structure in windows form using C# in Visual Studio 2010. The structure may contains labels and picture boxes with white background. I had no problem creating it but I am also giving a button named "Print" on this form so that user can print that card. I googled it but nothing concrete stuff found. Please help me out. ``` namespace Employee_Card_Manager { public partial class Card : Form { public Card(String a, String b, String c, String d, String e, String f, String g, String h, String i) { InitializeComponent(); this.label2.Text = a; this.label9.Text = b; this.label10.Text = c; this.label11.Text = d; this.label12.Text = e; this.label13.Text = f; this.label14.Text = g; this.label16.Text = h; this.pictureBox1.Image = Image.FromFile(i); Image myimg = Code128Rendering.MakeBarcodeImage(h, 2, true); this.pictureBox2.Image = myimg; } private void button1_Click(object sender, EventArgs e) { //Print Card Code } } } ``` The card template is as below: I have placed all card structure on a Panel Control and set Panel background to white. Can you fill the code which will print this card? Thanks