用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#