Почему DrawString выглядит так глупо? - PullRequest
9 голосов
/ 25 октября 2011

Я пытаюсь добавить масштаб текста к цветному изображению.На изображении agcScale.jpg (внизу) расположены две надписи winform сверху и снизу и две надписи winform слева и справа.Точно такой же код был использован для создания строк в правой и левой картинках, единственное отличие состоит в том, что pictureBoxAgcVscale содержит только строки.Почему DrawString в pictureBoxAgc выглядит хорошо, а DrawString в pictureBoxAgcVscale выглядит так плохо?Возможно, я могу исправить pictureBoxAgcVscale, выполнив bmp.SetPixel для каждого пикселя, но это кажется неправильным способом исправить это.

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 Ответ

14 голосов
/ 25 октября 2011

Вы рисуете черный текст на прозрачном фоне. Пиксели сглаживания исчезают с черного на черный, выбора нет, превращая буквы в капли. Это работает для текста слева, потому что сначала вы рисуете пиксели.

Вы забыли г.Очистить ().

...