C#打印绘图的实现方法
本文实例讲述了C#打印绘图的实现方法。分享给大家供大家参考。具体实现方法如下:
StringdrawString=""; FontdrawFont=null; SolidBrushdrawBrush=null; floatx=0F; floaty=0F; StringFormatdrawFormat=newStringFormat();
stringtest="";
publicstringTest { get{returntest;} set{test=value;} } publicForm1() { InitializeComponent(); //设置纸张大小 PaperSizepaperSize=newPaperSize("DataOrder",1023,614); printDocument1.DefaultPageSettings.PaperSize=paperSize; }
//打印 privatevoidbutton1_Click(objectsender,EventArgse) { printDocument1.PrintPage+=newPrintPageEventHandler(MyPrintDoc_PrintPage); try { printPreviewDialog1.Document=printDocument1; printPreviewDialog1.FormBorderStyle=FormBorderStyle.Fixed3D; printPreviewDialog1.ShowDialog(); printDocument1.Print(); } catch {
MessageBox.Show("请安装打印机","提示",MessageBoxButtons.OK,MessageBoxIcon.Error); } }
protectedvoidMyPrintDoc_PrintPage(objectsender,PrintPageEventArgse) { //字体颜色格式坐标 drawFont=newFont("Arial",8); drawBrush=newSolidBrush(Color.Black); x=0F; y=0F; drawFormat.FormatFlags=StringFormatFlags.NoWrap;
//块数 intnum=6; floatweightAll=12.600F; //标题 //标题第一行 stringtitle="钢板入库计量单"; stringBillCode="吊号:"+"20080505170"; stringClassType="班别:"+"乙"; stringtype1="类型:"+"定轧"; stringOrderNum="记录单号:"+"QW-Y14-02-06"; //标题第二行 stringArriveStation="到站:"; stringSpLine="专用线:"; stringSaleNo="销售订单号:"; //标题第三行 stringAcceptName="收货单位:"+"XXXX/12*2438*9144收二支"; stringtime=DateTime.Now.Year.ToString()+"年"+DateTime.Now.Month.ToString().PadLeft(2,'0')+"月"+DateTime.Now.Day.ToString()+"日"; //表格下数据 stringBoardNum="合计:"+num.ToString()+" 块 "+weightAll.ToString()+" 吨 "; stringCheckMan1="检查员:"+""; stringMeName="计量员:"+"XX"; stringCheckMan2="核对员:"+""; //线条长度 Penline=newPen(drawBrush,1); //绘图--字的位置 //绘图--总标题 e.Graphics.DrawString(title,drawFont,drawBrush,400,45,drawFormat); //绘图--标题--第一行 //吊号 e.Graphics.DrawString(BillCode,drawFont,drawBrush,125,83,drawFormat); //班别 e.Graphics.DrawString(ClassType,drawFont,drawBrush,354,83,drawFormat); //类型 e.Graphics.DrawString(type1,drawFont,drawBrush,500,83,drawFormat); //记录单号 e.Graphics.DrawString(OrderNum,drawFont,drawBrush,685,83,drawFormat);
//绘图--标题--第二行 //到站 e.Graphics.DrawString(ArriveStation,drawFont,drawBrush,125,106,drawFormat); //专用线 e.Graphics.DrawString(SpLine,drawFont,drawBrush,354,106,drawFormat); //销售订单号 e.Graphics.DrawString(SaleNo,drawFont,drawBrush,500,106,drawFormat);
//绘图--标题--第三行 //收货单位 e.Graphics.DrawString(AcceptName,drawFont,drawBrush,125,129,drawFormat); //时间 e.Graphics.DrawString(time,drawFont,drawBrush,685,129,drawFormat);
//绘图--表格下数据 //合计 e.Graphics.DrawString(BoardNum,drawFont,drawBrush,125,568,drawFormat); //检查员 e.Graphics.DrawString(CheckMan1,drawFont,drawBrush,400,568,drawFormat); //计量员 e.Graphics.DrawString(MeName,drawFont,drawBrush,550,568,drawFormat); //核对员 e.Graphics.DrawString(CheckMan2,drawFont,drawBrush,700,568,drawFormat);
//绘图表格 floatleftbianJu=120; floattopbianJu=152; floattableWidth=770; floattableHeight=393;
floatcellwidth=55; floatcellwidth1=110; floatcellheigh=0F;
//绘图--线的位置外边矩形 //横 e.Graphics.DrawLine(line,leftbianJu,topbianJu,leftbianJu+tableWidth,topbianJu); e.Graphics.DrawLine(line,leftbianJu,topbianJu+tableHeight,leftbianJu+tableWidth,topbianJu+tableHeight); //竖 e.Graphics.DrawLine(line,leftbianJu,topbianJu,leftbianJu,topbianJu+tableHeight); e.Graphics.DrawLine(line,leftbianJu+tableWidth,topbianJu,leftbianJu+tableWidth,topbianJu+tableHeight); //e.Graphics.DrawLine(line,15,0,15,614);
//绘图--内部竖线的位置 y=topbianJu+tableHeight; x=leftbianJu+cellwidth; e.Graphics.DrawLine(line,x,topbianJu,x,y); x=leftbianJu+cellwidth+cellwidth1; e.Graphics.DrawLine(line,x,topbianJu,x,y); x=leftbianJu+cellwidth+cellwidth1*2; e.Graphics.DrawLine(line,x,topbianJu,x,y); x=leftbianJu+cellwidth+cellwidth1*3; e.Graphics.DrawLine(line,x,topbianJu,x,y); x=leftbianJu+cellwidth*2+cellwidth1*3; e.Graphics.DrawLine(line,x,topbianJu,x,y); x=leftbianJu+cellwidth*3+cellwidth1*3; e.Graphics.DrawLine(line,x,topbianJu,x,y); x=leftbianJu+cellwidth*4+cellwidth1*3; e.Graphics.DrawLine(line,x,topbianJu,x,y); x=leftbianJu+cellwidth*5+cellwidth1*3; e.Graphics.DrawLine(line,x,topbianJu,x,y); x=leftbianJu+cellwidth*6+cellwidth1*3; e.Graphics.DrawLine(line,x,topbianJu,x,y); x=leftbianJu+cellwidth*7+cellwidth1*3; e.Graphics.DrawLine(line,x,topbianJu,x,y);
//绘图--内部横线的位置 //根据块数计算表格高度 if(num!=0) cellheigh=tableHeight/(float)num; else cellheigh=0; //绘图--内部横线的位置 for(inti=1;i<num;i++) { if(i==1) { //数据 stringstr=""; str="序号"; x=leftbianJu+cellwidth/5; y=topbianJu+cellheigh/3; e.Graphics.DrawString(str,drawFont,drawBrush,x,y,drawFormat); str="卡片编号"; x=leftbianJu+cellwidth+cellwidth1/5; e.Graphics.DrawString(str,drawFont,drawBrush,x,y,drawFormat);
str="炉号"; x=leftbianJu+cellwidth+cellwidth1+cellwidth1/5; e.Graphics.DrawString(str,drawFont,drawBrush,x,y,drawFormat);
str="物料编码"; x=leftbianJu+cellwidth+cellwidth1*2+cellwidth1/5; e.Graphics.DrawString(str,drawFont,drawBrush,x,y,drawFormat);
str="牌号"; x=leftbianJu+cellwidth+cellwidth1*3+cellwidth/5; e.Graphics.DrawString(str,drawFont,drawBrush,x,y,drawFormat);
str="厚度"; x=leftbianJu+cellwidth*2+cellwidth1*3+cellwidth/5; e.Graphics.DrawString(str,drawFont,drawBrush,x,y,drawFormat);
str="宽度"; x=leftbianJu+cellwidth*3+cellwidth1*3+cellwidth/5; e.Graphics.DrawString(str,drawFont,drawBrush,x,y,drawFormat);
str="长度"; x=leftbianJu+cellwidth*4+cellwidth1*3+cellwidth/5; e.Graphics.DrawString(str,drawFont,drawBrush,x,y,drawFormat);
str="重量"; x=leftbianJu+cellwidth*5+cellwidth1*3+cellwidth/5; e.Graphics.DrawString(str,drawFont,drawBrush,x,y,drawFormat);
str="级别"; x=leftbianJu+cellwidth*6+cellwidth1*3+cellwidth/5; e.Graphics.DrawString(str,drawFont,drawBrush,x,y,drawFormat);
str="偏差"; x=leftbianJu+cellwidth*7+cellwidth1*3+cellwidth/5; e.Graphics.DrawString(str,drawFont,drawBrush,x,y,drawFormat); } //横线 y=topbianJu+cellheigh*i; e.Graphics.DrawLine(line,leftbianJu,y,leftbianJu+tableWidth,y); } e.HasMorePages=false; }