2013-05-31 1 views
4

Я субтитры изображения, но углы слишком острые для букв, таких как М и W.C# Подпись изображение

enter image description here

Есть ли способ для закругленных углов? Вот мой текущий метод. Он имеет длинные ссылки, так как я использую это в 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; 
} 

ответ

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); 
} 
+0

Если это решило вашу проблему в точности, вы можете пометить этот ответ как принятый ответ самостоятельно. –

+1

@FurkanEkinci говорит, что я не могу принять его на 2 дня – John

+0

О да, это доступно только в первый раз. –