热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Bitmap上DrawString如何做到不模糊

创建一张bitmap,并用DrawString()上写数字;把bitmap放到PictureBox里,再把PictureBox放到Panel上,显示出来的数字非常模糊图片放到Pi
创建一张bitmap,并用DrawString() 上写数字;
把bitmap放到PictureBox里,
再把PictureBox放到Panel上,
显示出来的数字非常模糊

图片放到PictureBox中没有任何拉升缩放,
PictureBox放到Panel上没有任何拉升缩放,

请问这个数字在bitmap上怎么画才能不模糊?

6 个解决方案

#1


有拉伸才会模糊。模糊的原因就是矢量数据差值填充。

#2


测不出哪里拉升了。什么情况
                scale = new PictureBox();
                scale.BorderStyle = BorderStyle.None;
                scale.Width = Width;
                scale.Height = Height;
                scale.Parent = MainPanel;

                bitmap = new Bitmap(Width , Height);
             //   Graphics g = MainPanel.CreateGraphics();
                Graphics g = Graphics.FromImage(bitmap);
                Pen pen = new Pen(Color.Black);
                pen.DashStyle = DashStyle.Solid;
                SolidBrush brush = new SolidBrush(Color.Black);
                Font font = new Font("Airal", 5);
                Point start = new Point(0, 0);                  //每个刻度断线的起终位置
                Point end = new Point(0, 0);


                if (0 == dir)   //水平
                {
                    g.DrawLine(pen, new Point(location.X, location.Y + Height - 1), new Point(location.X + Width, location.Y + Height - 1));
                    
                    start.X = location.X;
                    start.Y = location.Y + Height - 1;
                    //画短竖线
                    for (int i = 0; i <= WidthMM; i++)
                    {
                        start.X = location.X + CONVERT.MMToPiexls(i, _dpix);
                        start.Y = location.Y + Height - 1;

                        end.X = start.X;
                        end.Y = start.Y - 3;
                        if (i % 5 == 0)
                        {
                            end.Y = start.Y - 4;
                        }
                        if (i % 10 == 0)
                        {
                            countX++;
                            end.Y = start.Y - 6;
                            StringFormat sf = new StringFormat();
                            //这里画出的数字很模糊
                            g.DrawString(i.ToString(), font, brush, new Point(start.X - 1, start.Y - 14));
                        }
                        g.DrawLine(pen, start, end);
                    }
                }

                scale.Image = (Image)bitmap;
                g.Dispose();

#3


你去掉这些,直接往一个位图上绘制,然后保存文件试试。看模糊不,位图不模糊的话说明代码没错。

#4


回复楼上:

保存为位图,结果是 任意放大画的刻度线不模糊,数字模糊。想发贴张图片怎么贴,论坛有点难用啊。

#5


“宋体”,9号以上 不再模糊,是字体太小导致的

#6


我也碰到这个问题,8号字体就模糊。9号就OK了。
还有一个奇怪的事情。另外一个XP机器,显示正常是。现在是WIN7的就不正常。如果用Arial字本,不正常机器用9号10号也是不正常。

推荐阅读
author-avatar
挚爱—fruit
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有