我正在为一张图片添加字幕,但是对于像M和W这样的字母来说角落太尖锐了。
是否有圆角的方法? 这是我目前的方法。它有很长的参考,因为我在WPF中使用它,我不希望它发生冲突。
public static System.Drawing.Image captionImage(System.Drawing.Image img, string text, string font, float fontSize, int left, int top)
{
System.Drawing.FontFamily c;
c = System.Drawing.FontFamily.Families.Where(x => x.Name.ToLower() == font.ToLower()).First();
if (c != null)
{
using (System.Drawing.StringFormat sf = new System.Drawing.StringFormat())
{
sf.Alignment = System.Drawing.StringAlignment.Near;
sf.LineAlignment = System.Drawing.StringAlignment.Near;
using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(img))
{
using (System.Drawing.Drawing2D.GraphicsPath path = new System.Drawing.Drawing2D.GraphicsPath())
{
path.AddString(text, c, 0, fontSize, new System.Drawing.Point(left, top), sf);
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
g.DrawPath(new System.Drawing.Pen(System.Drawing.Color.Black, fontSize * 0.3f), path);
g.FillPath(System.Drawing.Brushes.White, path);
}
}
}
}
return img;
}
答案 0 :(得分:1)
毕竟我想出来了。
我必须创建一个笔对象并将其线设置为圆形。
using (System.Drawing.Pen p = new System.Drawing.Pen(System.Drawing.Color.Black, fontSize * 0.3f))
{
p.LineJoin = System.Drawing.Drawing2D.LineJoin.Round;
g.DrawPath(p, path);
g.FillPath(System.Drawing.Brushes.White, path);
}