none
Drawstring 在Form与Bitmap上的效果不一样 RRS feed

  • 问题

  • 这张图由以下代码产生。
    左面的是用DrawString函数直接绘制在Form上的,右面的是在Bitmap对象中绘制好后,DrawImage到窗体上的。
    可以看到文本显示效果非常不同。
    因为我想使用双缓冲,把大量文本先绘制在BitMap上,再让它显示出来,但是两种显示效果不一样是无法容忍的。
    请问,这是为什么?怎样让两种方法绘制的文本显示效果一模一样
    private void Form1_Paint(object sender, PaintEventArgs e)
    {
        
        bmp = new Bitmap(ClientRectangle.Width, ClientRectangle.Height);
        Graphics gBmp = Graphics.FromImage(bmp);//内存位图
        Graphics gForm = e.Graphics;//Form
        for (int i = 1; i < 20; i++)
        {
            System.Drawing.Font f = new Font("宋体", i, FontStyle.Regular);
            gForm.DrawString("this is a test", f, Brushes.Black, new PointF(10f, i*Font.Height));
            gBmp.DrawString("this is a test", f, Brushes.Black, new PointF(0f, i * Font.Height));
        }
        gForm.DrawImage(bmp, new Point(200, 0));
    }


    2011年10月7日 2:34

全部回复