为什么DrawString看起来如此糟糕?

时间:2011-10-25 16:10:26

标签: c# winforms picturebox drawstring

我正在尝试为彩色图像添加文字比例。 agcScale.jpg图像(下方)是顶部和底部的2个winform标签,左侧和右侧是2个winform图片框。 完全相同的代码用于在右侧和左侧图片框中生成字符串,唯一的区别是pictureBoxAgcVscale仅包含字符串。 为什么pictureBoxAgc中的DrawString看起来不错,但pictureBoxAgcVscale中的DrawString看起来如此糟糕?我可以通过为每个像素执行bmp.SetPixel来修复pictureBoxAgcVscale,但这似乎是解决此问题的错误方法。

agcScale.jpg

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;
}

1 个答案:

答案 0 :(得分:13)

您正在透明背景上绘制黑色文字。抗锯齿像素从黑色渐变为黑色,没有选择,将字母变成斑点。它适用于左侧的文本,因为您首先绘制像素。

你忘了g.Clear()。

相关问题