作者:挚爱—fruit | 来源:互联网 | 2023-05-19 17:38
创建一张bitmap,并用DrawString()上写数字;把bitmap放到PictureBox里,再把PictureBox放到Panel上,显示出来的数字非常模糊图片放到Pi
创建一张bitmap,并用DrawString() 上写数字;
把bitmap放到PictureBox里,
再把PictureBox放到Panel上,
显示出来的数字非常模糊
图片放到PictureBox中没有任何拉升缩放,
PictureBox放到Panel上没有任何拉升缩放,
请问这个数字在bitmap上怎么画才能不模糊?
6 个解决方案
测不出哪里拉升了。什么情况
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();
你去掉这些,直接往一个位图上绘制,然后保存文件试试。看模糊不,位图不模糊的话说明代码没错。
回复楼上:
保存为位图,结果是 任意放大画的刻度线不模糊,数字模糊。想发贴张图片怎么贴,论坛有点难用啊。
我也碰到这个问题,8号字体就模糊。9号就OK了。
还有一个奇怪的事情。另外一个XP机器,显示正常是。现在是WIN7的就不正常。如果用Arial字本,不正常机器用9号10号也是不正常。