Emily1977
2015-02-18 00:06
采纳率: 0%
浏览 4.9k

为何用Graphics.DrawString(...) 生成的文字图片的效果和原字体不同?

我的应用要求是使用自定义字体 生成图片。我使用了.NET 的 Graphics.DrawString(...) 来生成图片,但生成图片的效果和在Label控件内使用相同的字体效果不同(如下图所示)。最明显的是“欢”子明显要细很多。我想知道的是如何能让“欢”显示与其他字同样的粗细。如果不能用DrawString(..)来达到这个目的。有没有其它方法可以用指定的字体来生成图片。
图片说明

下面是用来生成图片的代码:

private Bitmap CreateBitmapImage()
{
string sImageText = "欢迎 放松模式";

Font font = new Font("MHeiGB18030C Medium", 21, System.Drawing.FontStyle.Regular, GraphicsUnit.Pixel);            

Bitmap objBmpImage = new Bitmap(1, 1);

// Create a graphics object to measure the text's width and height.
Graphics objGraphics = Graphics.FromImage(objBmpImage);

// This is where the bitmap size is determined.
int width = (int)objGraphics.MeasureString(sImageText, font).Width;
int height = (int)objGraphics.MeasureString(sImageText, font).Height;

Bitmap bmp = new Bitmap(width, height);
using (Graphics g = Graphics.FromImage(bmp))
{                
    g.Clear(Color.White);

    g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
    g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;

    g.DrawString(sImageText, font, Brushes.Black, 0, 0);             
}
return bmp;

}

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • threenewbee 2015-02-18 02:19

    Label没有平滑模式,但是你开了。
    g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;

    另外字体、字号、加粗是否一致。

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题