用Spire.Barcode生成条码,旋转270再打印,发现打印出的条码扫描不出来。Spire.Barcode生成的码只能用画成图片的方式才能打印出来。
以下这种方式打印出来不清楚
//码的属性设定
settings.TopMargin = 0F;
settings.BottomMargin = 0F;
settings.TextMargin = 0F;
settings.Y = Convert.ToSingle(getAttribute[b][15].ToString());
settings.TextAlignment = (StringAlignment)Enum.Parse(typeof(StringAlignment), getAttribute[b][16].ToString());
settings.Rotate = Convert.ToSingle(getAttribute[b][3].ToString());//旋转角度
BarCodeGenerator generator = new BarCodeGenerator(settings);
Image image = generator.GenerateImage();
e.Graphics.DrawImage(image, Convert.ToInt32(getAttribute[b][1].ToString()), Convert.ToInt32(getAttribute[b][2].ToString()) + 20);
解决方法:
生成码时不再,不再设定旋转属性,而是打印时,把生成的图片旋转(前提是要知道旋转后的位置)
//码的属性设定
settings.TopMargin = 0F;
settings.BottomMargin = 0F;
settings.TextMargin = 0F;
settings.Y = Convert.ToSingle(getAttribute[b][15].ToString());
settings.TextAlignment = (StringAlignment)Enum.Parse(typeof(StringAlignment), getAttribute[b][16].ToString());
//settings.Rotate = Convert.ToSingle(getAttribute[b][3].ToString());//旋转角度
BarCodeGenerator generator = new BarCodeGenerator(settings);
Image image = generator.GenerateImage();
//0度
if (Convert.ToSingle(getAttribute[b][3].ToString()) == 0)
{
image.RotateFlip(RotateFlipType.RotateNoneFlipNone);
}
//90度
else if (Convert.ToSingle(getAttribute[b][3].ToString()) == 90)
{
image.RotateFlip(RotateFlipType.Rotate90FlipNone);
}
//180度
else if (Convert.ToSingle(getAttribute[b][3].ToString()) == 180)
{
image.RotateFlip(RotateFlipType.Rotate180FlipNone);
}
//270度
else if (Convert.ToSingle(getAttribute[b][3].ToString()) == 270)
{
image.RotateFlip(RotateFlipType.Rotate270FlipNone);
}
e.Graphics.DrawImage(image, Convert.ToInt32(getAttribute[b][1].ToString()), Convert.ToInt32(getAttribute[b][2].ToString()) + 20);