C# 为什么抽绳看起来这么糟糕?

C# 为什么抽绳看起来这么糟糕?,c#,winforms,picturebox,drawstring,C#,Winforms,Picturebox,Drawstring,我正在尝试向彩色图像添加文本比例。 agcScale.jpg图像(下图)在顶部和底部有2个winform标签,在左侧和右侧有2个winform PictureBox。 在右边和左边的PictureBox中使用了完全相同的代码来生成字符串,唯一的区别是pictureBoxAgcVscale只包含字符串。 为什么pictureBoxAgc中的抽绳看起来不错,而pictureBoxAgcVscale中的抽绳看起来很糟糕?我可能可以通过对每个像素执行bmp.SetPixel来修复pictureBoxAg

我正在尝试向彩色图像添加文本比例。 agcScale.jpg图像(下图)在顶部和底部有2个winform标签,在左侧和右侧有2个winform PictureBox。 在右边和左边的PictureBox中使用了完全相同的代码来生成字符串,唯一的区别是pictureBoxAgcVscale只包含字符串。 为什么pictureBoxAgc中的抽绳看起来不错,而pictureBoxAgcVscale中的抽绳看起来很糟糕?我可能可以通过对每个像素执行bmp.SetPixel来修复pictureBoxAgcVscale,但这似乎是错误的修复方法

private void DisplayAgcVscale(double min, double max)
{
    var bmp = new Bitmap(pictureBoxAgcVscale.Width, pictureBoxAgcVscale.Height);
    var c = (max - min) / bmp.Height;
    using (var g = Graphics.FromImage(bmp))
    {
        var font = new Font("Microsoft Sans Serif", 8.25F);
        var y1 = bmp.Height / 10;
        for (var y = y1; y < bmp.Height; y += y1)
        {
            var agc = y * c + min;
            var text = agc.ToString("#0.000V");
            var h = bmp.Height - y - font.Height / 2;
            g.DrawString(text, font, Brushes.Black, 0, h);
        }
    }
    pictureBoxAgcVscale.Image = bmp;
}

private void DisplayAgcVscale(最小值加倍,最大值加倍)
{
var bmp=新位图(pictureBoxAgcVscale.Width,pictureBoxAgcVscale.Height);
var c=(最大-最小)/bmp.高度;
使用(var g=Graphics.FromImage(bmp))
{
var font=新字体(“Microsoft无衬线字体”,8.25F);
变量y1=bmp.高度/10;
对于(变量y=y1;y
您正在透明背景上绘制黑色文本。抗锯齿像素从黑色逐渐变为黑色,别无选择,将字母变成斑点。它适用于左侧的文本,因为您首先绘制像素


你忘了g.Clear()

不是一个问题最专业的标题,嗯?你能把它编辑成一个简短但完整的程序吗?我自己试试,但如果你能做的话会更简单…@JonSkeet:我缩小了范围。你试过使用抗锯齿吗?@JoshuaEvensen我猜是抗锯齿(加上不清除背景)导致了这个问题。
g.Clear
在空白图像上?我现在必须试试这个。非常感谢。g、 Clear()工作正常,但(对我来说)违反直觉的是,
g.Clear()
需要透明的背景。谢谢..我用g.Clear()解决了文本质量差的问题。。我必须直接在图像上写文字。g、 Clear()帮助了我。在我的例子中,我不能直接在图形对象中加载的图像上使用g.clear()。首先创建新的空位图,然后使用g.Clear(),然后在新位图上写入文本,最后将该位图覆盖在原始图像上。