【问题标题】:Can I make a rich text box display control pictures?能否制作富文本框显示控件图片?
【发布时间】:2012-06-04 18:17:23
【问题描述】:

我正在尝试在富文本框中显示 control pictures。我需要文本框保持等宽。

当我将上述字符复制粘贴到 Visual Studio 中时,它们看起来是等宽的并且很好。但是在富文本框中显示时,它们只是正方形。我的 IDE 和文本框都在使用 Consolas。

我在我的 IDE 中看到了这个(最后两个字符是等价的):

richtextbox.Text = new string(new[] {'→', '␣', '␂', '\u2402'});

但我的文本框显示前两个字符,然后是两个框:

如何才能显示完整的角色图片?

【问题讨论】:

  • 如何将这些字符放入富文本框中?复制粘贴?通过代码?
  • @JoelLucsy 我正在通过StringBuilder 构建一个字符串,然后通过代码设置文本。
  • 好的。将代码粘贴到此处,以便我们查看。否则我们会猜测。
  • @JoelLucsy 这是很简单的代码,但还是添加了。

标签: .net unicode fonts richtextbox


【解决方案1】:

Windows 中很少有字体包含大量来自 Unicode 字符集的奇怪字符。当我将您的一个控制字符粘贴到 Word 中时,它会将其转换为 Arial Unicode MS 字体,这似乎是字体中不可用的字符的备份。

在插入字符之前,尝试将 Rich Edit 中的字体设置为 Arial Unicode MS。

【讨论】:

  • 你知道 Visual Studio 在粘贴到 IDE 时是否这样显示它们吗?
  • @DanRasmussen,我知道某些应用程序会自动使用替代字体,该过程甚至可能内置到 Windows API 的一部分中。我不知道 Visual Studio 具体是做什么的。
  • 这样做时有没有办法强制字符宽度保持文本框等宽?
  • @DanRasmussen,所有控制字符的宽度都应该相同,微软可能已经将它们设计为与等宽字体混合。试试看。
【解决方案2】:

根据给定的要求,您可以使用的唯一字体似乎是Everson Mono。例如,根据font coverage information at Fileformat.info,字符 U+2402 仅包含在少数字体中,而 Everson Mono(连同 Everson Mono Oblique)似乎是其中唯一的等宽字体。

使用混合字体,例如它涵盖的所有字符和其他一些等宽字体的控制台通常不起作用:它会破坏文本的等宽属性。 (相同字体大小的不同等宽字体不必具有相等的前进宽度,而且大多数情况下都没有。)

【讨论】:

  • 我试过了。不幸的是,Visual Studio 抱怨在尝试通过设计器设置字体时只能使用 TrueType 字体。也许这是一个设计问题,可以通过编程方式设置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-28
  • 2010-12-16
  • 1970-01-01
  • 2014-02-09
  • 1970-01-01
  • 1970-01-01
  • 2019-06-10
相关资源
最近更新 更多