如题

解决方案 »

  1.   

    public Font (string familyName,float emSize);
     
    参数
    familyName
    新 Font 的 FontFamily 的字符串表示形式。 emSize
    新字体的全身大小(以磅值为单位)。你应该根据画布的大小和字符串的长度得到每个字的象素大小。再将其转换为磅值。
      

  2.   

    得到每个字体占用的象素后直接使用下面的构造函数即可。制定uint为GraphicsUnit.Pixel;
    public Font (string familyName,float emSize,GraphicsUnit unit);
      

  3.   

    protected override void OnPaint(PaintEventArgs e)
            {
                using (Font font = new Font("宋体", 9))
                {
                    Draw(e.Graphics, "中华人民共和国", font);
                    font.Dispose();
                }// end using
                base.OnPaint(e);
            }protected void Draw(Graphics g,string Text,Font font )
            {
                //获取字符大小
                SizeF f = g.MeasureString( Text,font );
                int width = (int)f.Width;
                int height = (int)f.Height;
                //根据字符大小创建画布
                using (Bitmap bmp = new Bitmap(width, height))
                {
                    //在画布上创建绘图对象
                    using (Graphics g_temp = Graphics.FromImage(bmp))
                    {
                        //创建单色笔刷
                        using( SolidBrush brush = new SolidBrush( Color.Black ) )
                        {                       
                            //在画布上绘制文本
                            g_temp.DrawString(Text, font, brush, 0, 0);
                            brush.Dispose();
                        }//
                        g_temp.Dispose();
                    }// end using
                    //将文字以原来大小的80%绘制到窗体
                    //g.DrawImage(bmp,new Rectangle(0,0,(int)(width * 0.8),(int)(height * 0.8)));
                    //实际大小
                    g.DrawImage(bmp, new Rectangle(0, 0, width, height));
                    bmp.Dispose();
                }// end using
            }// end void
      

  4.   

    kmblack1(black):你的方法倒是可行,就是在绘制比原字大很多的字时,会出现模糊,不过可能指定一个较大的初始字体来稍做调整,不管怎么说,也是一种解决方案,多谢!
    另外提醒你一下,你在用了 using() 之后,没有必要在 using 块结束时,显示的调用对象的 Dispose() 方法,因为系统会会自动调用 using() 块声明的对象的 Dispose() 方法。