【发布时间】:2012-02-04 14:06:13
【问题描述】:
我正在尝试动态设置 TextBox 控件中每个字符的间距(宽度)。我已经阅读了大量内容,但我认为这在普通的 TextBox 中是不可能的。我对 RichTextBox 或任何其他可以解决此问题的控件持开放态度。
为了证明这是可能的,我打开了 Word,我能够选择一个字符并调整其间距并“拉伸”它。我希望在我的 .NET 应用程序中实现相同的行为。
是否有代码示例或控制说明如何实现?
【问题讨论】:
-
我真的想不出任何其他方法来做到这一点,除了所有者绘制的控件;一个继承了 TextBox 类,然后是一个你控制字符的绘制;由于您已经知道每个字符的位置,您可以指定(例如,如果您使用固定字体)这些内容在框中的显示方式。或者,您可以使用 DevExpress、DevComponents 或 Telerak 等第 3 方控件。
-
您必须实现自己的控件并使用 Graphics.ScaleTransform() + Graphics.DrawString()。很难得到正确的字母间距,Graphics.MeasureCharacterRanges。更难让它看起来不错。
-
制作自己的控件的一个便宜的技巧可能是使用 WebBrowser 控件——这样你只需要生成 HTML 来做你想做的事。未经测试,但我认为它可以工作。当然,您将无法输入控件 - 您必须在工作区和显示区之间进行分割……至少无需像 TextBox 那样扩展 WebBrowser。
-
很遗憾,WPF 目前不适合我。
标签: .net winforms fonts textbox richtextbox