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

为何用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;

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

    评论

报告相同问题?

悬赏问题

  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序