【问题标题】:Render Text as Small Caps in .NET在 .NET 中将文本呈现为小型大写字母
【发布时间】:2015-08-06 13:10:35
【问题描述】:

我在 C# 中使用 DrawString 将字符串绘制成更大的图形:

 g.DrawString("Re", new Font("PT Sans Narrow", 35, FontStyle.Bold), Brushes.Black, new Point(5, 0));

现在我想用小型大写字母绘制文本,因为这在许多文字处理器或图形工具中都是可能的……我并不是指像“绘制大于其余字母的第一个字母”这样的伪造的小型大写字母。 这在 C#/.NET 中可行吗?

【问题讨论】:

  • 您能否举例说明您正在寻找什么以及您不想要什么?因为我不是图形艺术家,据我所知,小型大写字母是一种字体。
  • @MichaelMcPherson 在 Microsoft Word 中,字体对话框有一个分组在效果下的“小写字母”复选框。还有诸如删除线、超级/下标、阴影、全部大写等内容。但不知道这些效果是如何在 Word 中实现的。除非通过 Office 互操作,否则可能无法从 .NET 使用任何东西。

标签: c# fonts drawtext


【解决方案1】:

为什么不直接渲染大写字符串? 如果您需要完全适合其他字符串的字符串,您可以测量渲染字符串的大小,如下所示:

string s1 = "Simple text";
string s2 = "Capitalized text";
Font font1 = new Font("PT Sans Narrow", 35, FontStyle.Bold);
Font font2 = new Font("PT Sans Narrow", 25, FontStyle.Bold);
SizeF size1 = g.MeasureString(s1, font1);
SizeF size2 = g.MeasureString(s2, font2);
Point point1 = new Point(5, 0);
Point point2 = new Point(point1.X + size1.Width, point1.Y + size1.Height - size2.Height);
g.DrawString(s1, font1, Brushes.Black, point1);
g.DrawString(s2.ToUpper(), font2, Brushes.Black, point2);
font1.Dispose();
font2.Dispose();

【讨论】:

    【解决方案2】:

    怎么样:

     string output = "Re";
     g.DrawString(output.ToLower(), new Font("PT Sans Narrow", 35, FontStyle.Bold), Brushes.Black, new Point(5, 0));
    

    【讨论】:

      猜你喜欢
      • 2013-06-25
      • 1970-01-01
      • 2014-01-20
      • 1970-01-01
      • 2013-02-04
      • 2015-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多