首页 新闻 会员 周边

C# Graphics 加文字生成图片打印预览模糊。

0
悬赏园豆:20 [已解决问题] 解决于 2018-09-28 14:58

调用window.print()打印图片
后台用gdi加的文字。

    Bitmap bitmap = new Bitmap(265,300);
    Graphics g = Graphics.FromImage(bitmap);
    g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
    g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.SingleBitPerPixel ;
    //g.CompositingQuality =          System.Drawing.Drawing2D.CompositingQuality.HighQuality;
    //g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;

    g.Clear(Color.White);//透明
    
    float fontSize18 = 18;
    float fontSize14 = 14;
    float fontSize12 = 12;
    float fontSize8 = 8;
    Font fontC = new Font("微软雅黑", fontSize12, FontStyle.Regular);
    StringFormat format = new StringFormat(StringFormatFlags.NoClip);



    g.DrawString("IQC合格标签(RoHS)", new Font("宋体", 20, FontStyle.Bold, GraphicsUnit.Pixel), new SolidBrush(Color.Black), new PointF(0, 0));
    SizeF sizef1 = g.MeasureString("IQC合格标签(RoHS)", new Font("宋体", 20, FontStyle.Bold,GraphicsUnit.Pixel), PointF.Empty, format);

BetterCoder的主页 BetterCoder | 初学一级 | 园豆:45
提问于:2018-09-25 16:07
< >
分享
最佳答案
0
收获园豆:20
无 影 | 初学一级 |园豆:59 | 2018-09-28 11:05

Graphics 的几个属性,有设置的,有效果,但是依然模糊。

BetterCoder | 园豆:45 (初学一级) | 2018-09-28 11:07

@BetterCoder:

我也是通过Graphics画图打印的,打印出来也比较清晰,是不是你的打印机设置有问题?

无 影 | 园豆:59 (初学一级) | 2018-09-28 11:17

@无 影: 我360极速 你用的啥浏览器,关键代码也贴点看看?

BetterCoder | 园豆:45 (初学一级) | 2018-09-28 11:40

@BetterCoder:

我这是在 VS 里面用 Graphics 画出来的,然后打印到 xps打印机,但是我试过了,直接打印到 A4纸也是很清晰的。

var pen = new Pen(Brushes.Black) { Width = 0.4F };
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;

        const int persion_height = 75;//条码Y轴间隔距离
        System.Drawing.Font font0 = new Font("微软雅黑", 3, FontStyle.Regular, GraphicsUnit.Millimeter);


        Code128 _Code = new Code128();
        Font font1 = new Font("微软雅黑", 3.5F, FontStyle.Bold, GraphicsUnit.Millimeter);
        Font font2 = new Font("微软雅黑", 5, FontStyle.Bold, GraphicsUnit.Millimeter);
        Font font3 = new Font("宋体", 2.8F, FontStyle.Regular, GraphicsUnit.Millimeter);

        string[] TitleList = Title.Split('@');
        var start_top = 90;

        g.DrawString(string.Format("{0}", TitleList[0].ToString().ToUpper()), font1, Brushes.Black, 20, 23);
        g.DrawString(string.Format("{0}", DateTime.Now.ToString("MM/dd/yyyy")), font1, Brushes.Black, 650, 23);


        string fsdf = TitleList[0].ToString();
        var imgTemp1 = _Code.GetCodeImage(TitleList[0].ToString().ToUpper(), Code128.Encode.Code128A);

        g.DrawImage(imgTemp1, 300, 18, 150, 27);
无 影 | 园豆:59 (初学一级) | 2018-09-28 11:51

@无 影: 跟字体、选择打印机都有关系,还有 GraphicsUnit.Pixel和GraphicsUnit.Millimeter单位不同 ,效果也有出入。

BetterCoder | 园豆:45 (初学一级) | 2018-09-28 15:01

@BetterCoder: 解决了没?

无 影 | 园豆:59 (初学一级) | 2018-09-28 15:16

@无 影: 选你说的xps 能出来跟你一样的效果了,但是我这个条码打印机不行。还是模糊,我打算前端生成,再调用打印。。

BetterCoder | 园豆:45 (初学一级) | 2018-09-28 15:25
其他回答(1)
0

 Graphics.clear(Color.White); 加上这个试试

徒然喜欢你 | 园豆:1741 (小虾三级) | 2018-09-25 16:16

有加的,你看我的代码第五行。

支持(0) 反对(0) BetterCoder | 园豆:45 (初学一级) | 2018-09-25 16:18

@BetterCoder: 改下字体试试,把微软雅黑换成宋体

支持(0) 反对(0) 徒然喜欢你 | 园豆:1741 (小虾三级) | 2018-09-25 16:24

@徒然喜欢你: 差不多的样子 试了的

支持(0) 反对(0) BetterCoder | 园豆:45 (初学一级) | 2018-09-25 16:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册