合并图形对象无法正确呈现文本

时间:2012-03-13 09:59:43

标签: c# winforms graphics system.drawing

我正在尝试使用从VCL C ++应用程序移植的自定义控件解决问题。这个想法是控件的各个部分首先在一个新的Graphics对象上绘制,然后与控件的paint方法中的Graphics对象合并。

我创建了一个简化的例子:

using System.Drawing;
using System.Windows.Forms;

namespace Test
{
    public class Form1 : Form
    {
        private PictureBox pictureBox;

        public Form1()
        {
            pictureBox = new PictureBox();
            pictureBox.Dock = DockStyle.Fill;
            pictureBox.Paint += new PaintEventHandler(pictureBox_Paint);

            ClientSize = new Size(100, 50);
            Controls.Add(pictureBox);
        }

        private void pictureBox_Paint(object sender, PaintEventArgs e)
        {
            SolidBrush blackBrush = new SolidBrush(Color.Black);

            Bitmap bitmap = new Bitmap(pictureBox.Width, pictureBox.Height);
            Graphics graphics = Graphics.FromImage(bitmap);

            Font font = new Font(pictureBox.Font, FontStyle.Regular);
            graphics.DrawString("simple test", font, Brushes.Black, 0, 0);

            e.Graphics.DrawImage(bitmap, 0, 0);
        }
    }
}

运行上面的代码会导致文本被绘得太厚:

当我修改代码以直接将文本绘制到PictureBox的Graphics对象时,我得到了正确的结果:

仅在文本呈现时才会出现此问题。线条和其他形状正确呈现。任何想法如何解决这个问题?

提前致谢。

0 个答案:

没有答案