10

カラー画像にテキスト スケールを追加しようとしています。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;
}
4

1 に答える 1

15

透明な背景に黒いテキストを描画しています。アンチエイリアシング ピクセルが黒から黒にフェードアウトし、選択の余地がなく、文字がブロブに変わります。最初にピクセルを描画するため、左側のテキストで機能します。

g.Clear() を忘れました。

于 2011-10-25T16:26:26.440 に答える