当前位置:编程学习 > C#/ASP.NET >>

用Graphics绘制文字第一个比其他字突出

代码: /// <summary>
    /// 根据文字查询文字框路径并将文字和文字框合成一张完整图片
    /// </summary>
    /// <param name="letter">文字</param>
    /// <param name="letterLayerType">坐标、大小等</param>
    /// <returns>图片</returns>
    private Image GetImageByLetter(string letter, LayerType letterLayerType, string basePath) {
      int max_rows = 0;
      int x = 17, y = 38;
      string dialogPath = "";
      Image dialogImage = null;
      string txt = "";

      txt = letter.Length > 32 ? letter.Substring(0, 32) + "..." : letter;//如果超出32个字则“...”代替

      max_rows = txt.Length % 5 == 0 ? txt.Length / 5 : txt.Length / 5 + 1;//计算行数

      //根据行数计算使用文字框 和x、y轴坐标
      if (max_rows < 2) {
        dialogPath = @"\Images\combinationImages\dialog\Christmas_Dialog_0000190_01.bshn";
        x = 13;
      }
      else if (max_rows < 4)
        dialogPath = @"\Images\combinationImages\dialog\Christmas_Dialog_0000190_02.bshn";
      else if (max_rows < 6)
        dialogPath = @"\Images\combinationImages\dialog\Christmas_Dialog_0000190_03.bshn";
      else if (max_rows < 9)
        dialogPath = @"\Images\combinationImages\dialog\Christmas_Dialog_0000190_04.bshn";

      //拿到适当大小的图片
      if (!string.IsNullOrEmpty(dialogPath))
        dialogImage = GetImageDecryptPath(dialogPath, basePath);
      //逐行添加文字
      string tempText = txt;//每一行的文字
      int txtX = x;//每一行的坐标x轴
      int txtY = y;//每一行的坐标y轴
      Bitmap bit = null;
      //加载文字框
      try {
        if (dialogImage == null)
          return null;
        bit = new Bitmap(dialogImage.Width, dialogImage.Height);
        Graphics g = Graphics.FromImage(bit);
        g.DrawImage(dialogImage, 0, 0, dialogImage.Width, dialogImage.Height);
        g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAliasGridFit;
        Font f = new Font("幼圆", 20, FontStyle.Regular, GraphicsUnit.Pixel);
        Brush b = new SolidBrush(Color.Black);
        for (int i = 0; i < max_rows; i++) {
          int len = tempText.Length < 4 ? tempText.Length : 4;
          tempText = tempText.Substring(0, len);
          g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
          g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
          g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
          //把文字画在文字框上
          g.DrawString(tempText, f, b, txtX, txtY);
          //获取剩余的文字
          tempText = txt.Substring(i * 4 + len);
          txtY += 25;//给下一行的y轴加上12  
        }
        g.Dispose();
      }
      catch (Exception ex) {

        throw new Exception(ex.Message);
      }


      return bit;
    }

希望的效果:绘制的文字第一个字的字体跟大小和其他字体不一样,请问如何修改。
如:哈哈哈哈啊哈 --------------------编程问答-------------------- 应该是视觉差问题吧,重新清理掉再生成加载下项目
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,