C# winform e.Graphics.DrawString 旋转打印一例
前段时间的合格证标签打印老是卡纸,车间将纸竖过来放卡纸少很多,程序也要做修改,在原程序上加了以下两行代码;
e.Graphics.TranslateTransform(285, 685); e.Graphics.RotateTransform(-90.0F);
第一行的两个坐标,要一点一点调试,没有找到什么科学的规律,(可能和我用喷墨打印机的居中打印有关系,在PDF虚拟机中测试了几十次才勉强看到效果)
第二行的,-90是向左转90度。如果改成 90 是向右转90度;
附:打印代码
try { string rq = DateTime.Now.ToString("yyyy-MM-dd"); int num1 = 200; //标签文字开始X点 int x0 = 125; //int x1 = 125; 小票打印机位置 int x1 = 350; int x2 = 360; int y1 = 70; int yStep = 39; //行间距 StringFormat stringFormat = new StringFormat(); stringFormat.Alignment = StringAlignment.Center; stringFormat.LineAlignment = StringAlignment.Center; Pen pen = new Pen(Color.Black, 1f); Font font = new Font("黑体", 18f, FontStyle.Bold); Font font2 = new Font("宋体", 16f, FontStyle.Bold); Font font3 = new Font("宋体", 15f, FontStyle.Bold); Brush fontColor; if (ckbBlack.Checked) { fontColor = Brushes.Black; } else { fontColor = Brushes.Red; } //Brush black = Brushes.Black; //创建黑色笔。 Pen blackPen = new Pen(Color.Black, 1); // 绘制到屏幕上。 //加入旋转代码,仅供酊剂车间使用。2024-07-12 //宽9.5CM ,高6.5cm //e.Graphics.TranslateTransform(555,505); // 已经有效果,能看到打印的文字了,285,505效果居中 e.Graphics.TranslateTransform(285, 575); e.Graphics.RotateTransform(-90.0F); //e.Graphics.RotateTransform(90.0F); //品名 e.Graphics.DrawString(txtName.Text, font2, fontColor, x1, y1); y1 = y1 + yStep; //批号 e.Graphics.DrawString(txtBatchNo.Text, font2, fontColor, x1, y1); y1 = y1 + yStep; //检验员 e.Graphics.DrawString(txtChecker.Text, font2, fontColor, x1-10, y1); e.Graphics.DrawString(txtOperator.Text, font3, fontColor, x1+128, y1); } catch (Exception ex) { MessageBox.Show(ex.Message); }
活到老,学到老。