private void printDoc_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
e.Graphics.DrawString(infoData.DataOne,
new Font(new System.Drawing.FontFamily("宋体"), 7, System.Drawing.FontStyle.Bold),
System.Drawing.Brushes.Black,
10, 10
);
e.Graphics.DrawString("产地:"+infoData.DataOne,
new Font(new System.Drawing.FontFamily("宋体"), 7, System.Drawing.FontStyle.Bold),
System.Drawing.Brushes.Black,
260, 10
);
e.Graphics.DrawString("生产商:"+infoData.DataTwo,
new Font(new System.Drawing.FontFamily("宋体"), 7, System.Drawing.FontStyle.Bold),
System.Drawing.Brushes.Black,
260, 25
);
e.Graphics.DrawString("地址:"+infoData.DataThree,
new Font(new System.Drawing.FontFamily("宋体"), 7, System.Drawing.FontStyle.Bold),
System.Drawing.Brushes.Black,
260, 40
);
e.Graphics.DrawString("产品名称:"+infoData.DataFour,
new Font(new System.Drawing.FontFamily("宋体"), 7, System.Drawing.FontStyle.Bold),
System.Drawing.Brushes.Black,
260, 55
);
e.Graphics.DrawString("生产编号:" + infoData.DataFive,
new Font(new System.Drawing.FontFamily("宋体"), 7, System.Drawing.FontStyle.Bold),
System.Drawing.Brushes.Black,
260, 70
);
e.Graphics.DrawLine(new System.Drawing.Pen(System.Drawing.Color.Black),
new System.Drawing.Point(2, 80), new System.Drawing.Point(260, 80));
e.Graphics.DrawLine(new System.Drawing.Pen(System.Drawing.Color.Black),
new System.Drawing.Point(260, 10), new System.Drawing.Point(260, 231));
//设置尺寸
options = new EncodingOptions
{
Width = 180,
Height = 40,
Margin = 0
};
writer = new BarcodeWriter();
//设置条形码格式
writer.Format = BarcodeFormat.CODE_128;
writer.Options = options;
options.NoPadding = true;
//options.PureBarcode = true;
Bitmap bitmap = writer.Write(infoData.CodeOne);
//System.Windows.MessageBox.Show(bitmap.Width.ToString());
//将生成的条形码图片保存
image = bitmap;
e.Graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
e.Graphics.PixelOffsetMode = PixelOffsetMode.Half;
e.Graphics.DrawImage(image, new System.Drawing.Point(5, 180));
//设置尺寸二维码
optionsQR = new EncodingOptions
{
Width = 60,
Height = 60
};
optionsQR.NoPadding = true;
optionsQR.PureBarcode = true;
writerQR = new BarcodeWriter();
//设置条形码格式
writerQR.Format = BarcodeFormat.QR_CODE;
writerQR.Options = optionsQR;
Bitmap bitmapQR = writerQR.Write(infoData.CodeTwo);
//将生成的条形码图片保存
imageQR = bitmapQR;
e.Graphics.DrawImage(imageQR, new System.Drawing.Point(205, 130));
}
由于使用zxing,code128总是有最小width,不能修改到满意的width 标签纸是10*6的
e.Graphics.ScaleTransform(0.6f, 1F);改变大小
这个会改变其后 使用e.graphics的元素,是变形式变窄和宽,所以单独给条形码使用需要
使用Graphics定义名字,如上 我在条形码那部分加上这个 会导致二维码也跟着改变
这三行是设置条形码变得清晰,不虚
e.Graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
e.Graphics.PixelOffsetMode = PixelOffsetMode.Half;
但是会有墨迹深重影响这个一般会出现在条形码中字符有非数字或者很长
这也是我在代码中试了各种方法不能解决,突然间百度搜到了修改这个深度值 能使每个条条都是均匀黑色
再有就是点击事件中调用了
PrintDocument print = new PrintDocument();
print.DefaultPageSettings.PaperSize = new PaperSize("", 396, 236);
// print.DefaultPageSettings.PaperSize = new PaperSize("", 792, 472);
// System.Windows.Forms.PrintPreviewDialog ppd = new System.Windows.Forms.PrintPreviewDialog();
print.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(this.printDoc_PrintPage);
//打印预览的打印文档设置为被打印文档
// ppd.Document = print;
///ppd.ShowDialog();
print.Print();