چاپ فرم جاری در سی شارپ
پنجشنبه 21 خرداد 1394در این مقاله و نمونه ضمیمه شده قصد داریم فرم جاری را به همراه پیش نمایش چا پ کنیم .
در روی فرم یک کلید برای چاپ قرار میدیدم
کدهای کلید به شرح ذیل است
System.Drawing.Printing.PrintDocument PrintDoc=new System.Drawing.Printing.PrintDocument(); PageSetupDialog PageSetupDialog1=new PageSetupDialog(); PrintPreviewDialog PreviewDialog=new PrintPreviewDialog(); PrintDoc.OriginAtMargins=true; PrintDoc.DefaultPageSettings=PageSetupDialog1.PageSettings; PrintDoc.PrintPage+=new System.Drawing.Printing.PrintPageEventHandler(PrintDoc_Print); PageSetupDialog1.Document=PrintDoc; PageSetupDialog1.ShowDialog(); PreviewDialog.Document=PrintDoc; PreviewDialog.AllowTransparency=true; PreviewDialog.WindowState = System.Windows.Forms.FormWindowState.Maximized; PreviewDialog.ShowDialog(); PrintDoc.Dispose(); PreviewDialog.Dispose(); PageSetupDialog1.Dispose();
همانطور که میبینید از فضای نام System.Drawing.Printing استفاده شده است
متد زیر وظیفه تهیه تصویر از کنترل های روی فرم را بر عهده دارد
private void DrawControls( System.Drawing.Printing.PrintPageEventArgs e) { System.Drawing.SolidBrush SBrush = new System.Drawing.SolidBrush(System.Drawing.Color.White); System.Drawing.Rectangle Rect = new System.Drawing.Rectangle(lbl1.Left , lbl1.Top, lbl1.Width, lbl1.Height); System.Drawing.Region Region1 = new System.Drawing.Region(Rect); e.Graphics.FillRegion(SBrush, Region1); SBrush = new System.Drawing.SolidBrush(lbl1.ForeColor); System.Drawing.SizeF oSizeF = e.Graphics.MeasureString(lbl1.Text, lbl1.Font); e.Graphics.DrawString(lbl1.Text, lbl1.Font,SBrush, lbl1.Left, lbl1.Top,System.Drawing.StringFormat.GenericDefault); ///e.Graphics.DrawString(lblCurrent.Text, lblCurrent.Font, oSolidBrush, lblCurrent.Left + e.MarginBounds.Left + (lblCurrent.Width - oSizeF.Width) / 2, 950 + e.MarginBounds.Top + 2, System.Drawing.StringFormat.GenericDefault); SBrush = new System.Drawing.SolidBrush(System.Drawing.Color.White); Rect = new System.Drawing.Rectangle(lbl2.Left , lbl2.Top, lbl2.Width, lbl2.Height); Region1 = new System.Drawing.Region(Rect); e.Graphics.FillRegion(SBrush, Region1); SBrush = new System.Drawing.SolidBrush(lbl2.ForeColor); oSizeF = e.Graphics.MeasureString(lbl2.Text, lbl2.Font); e.Graphics.DrawString(lbl2.Text, lbl2.Font,SBrush, lbl2.Left, lbl2.Top,System.Drawing.StringFormat.GenericDefault); Rect =new Rectangle(pic1.Left,pic1.Top,pic1.Width,pic1.Height); Region1=new Region(Rect); e.Graphics.FillRegion(SBrush,Region1); e.Graphics.DrawImage(pic1.Image,Rect); Region1.Dispose(); SBrush.Dispose(); }
- C#.net
- 8k بازدید
- 7 تشکر