آموزش پرینت و چاپ در سی شارپ
جمعه 9 مرداد 1394در این مقاله قصدداریم به نحوه چاپ و پرینت در سی شارپ بپردازیم
در این پارت از آموزش میخواهیم برای یک پایانه اتوبوس رانی یک برنامه بنویسیم که اسم راننده و باقی اطلاعات را به صورت یک بلیط برای مسافر چاپ کرده و به آن نشان دهد
برای شروع ویژوال استادیو را باز کرده و یک پروژه از نوع Windows Form ایجاد میکنیم
حال فضای نام زیر را به برنامه اضافه کنید
using System.Drawing.Printing;
حال فرم خود را مانند زیر طراحی میکنیم.
حال یک نمونه از کلاس print document به نام pd ایجاد میکنیم
این کلاس برای ترسیم یک سند و یا ارسال محتوا به یک سند کارایی دارد.
PrintDocument pd = new PrintDocument();
حال برای تعین سایز صفحه نیاز داریم از کلاس PaperSize استفاده کنیم.
PaperSize ps = new PaperSize("", 420, 540);
حال یک متد به نام pd.PrintPage ایجاد میکنیم
pd.PrintPage += new PrintPageEventHandler(pd_PrintPage); void pd_PrintPage(object sender, PrintPageEventArgs e) { ‘’ write your code }
حال یک شی از کلاس graphics ایجاد میکنیم این کلاس برای ترسیم در سی شارپ کاربرد دارد.
Graphics g = e.Graphics;
حال با فراخوانی متد DrawRectangle میتوانیم نمایی از بلیط را درسی شارپ طراحی کنیم.
g.DrawRectangle(Pens.Black,5,5,410,530);
حال برای اضافه کردن لوگو در قسمت بالای بلیط از کد زیر استفاده میکنیم.
string title = Application.StartupPath+"\\CBT_Title.png"; g.DrawImage(Image.FromFile(title),50,7);
برای تعین نوع و اندازه و رنگ فونت از کد زیر استفاده میکنیم.
Font fBody = new Font("Lucida Console", 15, FontStyle.Bold); SolidBrush sb = new SolidBrushColor.Black);
حال برای نوشتن در بلیط از قطعه کد زیر استفاده میکنیم
g.DrawString("-------------------------------",fBody1,sb, 10, 120); g.DrawString("تاریخ :", fBody,sb, 10, SPACE); g.DrawString(DateTime.Now.ToShortDateString(), fBody1, sb, 90, SPACE); g.DrawString("ساعت حرکت :", fBody, sb, 10, SPACE+30); g.DrawString(DateTime.Now.ToShortTimeString(), fBody1, sb, 90, SPACE + 30); g.DrawString("شماره بلیط.:", fBody, sb, 10, SPACE+60); g.DrawString("", fBody1, sb, 120, SPACE + 60); g.DrawString("شماره اتوبوس.:", fBody, sb, 10, SPACE+90 ); g.DrawString(txtBusNo.Text, fBody1, sb, 100, SPACE + 90);
حال برای آن که تعداد بلیط ها به صورت رندم تولید بشوند یک شی از کلاس Random ایجاد کرده و در متد Next تعداد حالات رندم را به آن میدهیم و همچنین برای استفاده از بارکد برای بلیط از کد زیر استفاده میکنیم
Random RandomNumber = new Random(); int no = RandomNumber.Next(1000, 9999); Image imgBarcode = BarcodeLib.Barcode.DoEncode(BarcodeLib.TYPE.CODE128, no.ToString(),true,Color.Black,Color.White,200,60); g.DrawImage(imgBarcode, 10, SPACE + 240);
حال میتوانیم تعداد اطلاعات برای چاپ روی بلیط را اضافه کنیم.
g.DrawString("TicketNo.:", fBody, sb, 10, SPACE+60); g.DrawString(no.ToString(), fBody1, sb, 150, SPACE + 60); g.DrawString("BusNo.:", fBody, sb, 10, SPACE+90 ); g.DrawString(txtBusNo.Text, fBody1, sb, 100, SPACE + 90); g.DrawString("Route:", fBody, sb, 10, SPACE+120); g.DrawString(cbRoute.SelectedItem.ToString(), fBody1, sb, 100, SPACE + 120); int price = Convert.ToInt32(txtMember.Text) * Convert.ToInt32(txtPrice.Text); string price1=txtMember.Text +" X "+ txtPrice.Text +" = "+price.ToString(); g.DrawString("Full:", fBody, sb, 10, SPACE+150); g.DrawString(price1, fBody1, sb, 80, SPACE + 150); g.DrawString("Rs."+price.ToString()+".00", rs, sb, 10, SPACE + 180); g.DrawString(TType,fTType, sb, 230, 120); g.DrawString("HelplineNo.: +91 9999999999", fBody2,sb, 15, 465); g.DrawString("* NOT TRANSFERABLE", fBody2, sb, 15, 485); g.Dispose();
حال برای تنظیم حاشیه از سمت راست و چپ از کد های زیر استفاده میکنیم
pd.PrintController = new StandardPrintController(); pd.DefaultPageSettings.Margins.Left = 0; pd.DefaultPageSettings.Margins.Right = 0; pd.DefaultPageSettings.Margins.Top = 0; pd.DefaultPageSettings.Margins.Bottom = 0; pd.DefaultPageSettings.PaperSize = ps; pd.Print();
- C#.net
- 25k بازدید
- 37 تشکر