在TextControl中测量文本长度

发布时间:2012/11/16 00:11 发布者:葡萄城产品团队

返回博客中心

在多数系统中,我们经常会判断在指定的显示范围内是否能够显示下指定的文本长度,此时我们会用到GDI+提供的MeasureString方法。

在 TX Text Control 中测量文本长度的方法稍微有所不同,TX Text Control 有自己的的文本渲染机制,通过这种所见即所得的渲染机制才使得TX的文本编辑功能如此的优秀。
在 TX Text Control X8 版本中,WinForms和WPF系统中可以使用一个不可见的ServerTextControl组件,通过该组件可以得到文本的实际长度,下面的代码简单演示了该功能:

 
public int MeasureTextControlString(Selection Selection, string FormattingPrinter)
{
     int iLength;
      using (ServerTextControl tx = new ServerTextControl())
     {
         tx.Create();
         tx.PageSize.Width = 10000;
         tx.FormattingPrinter = FormattingPrinter;
          foreach (PropertyInfo property in Selection.GetType().GetProperties())
         {
             if (property.GetValue(Selection, null).ToString() == "")
                continue;

              property.SetValue(tx.Selection,
                  property.GetValue(Selection, null), null);
         }

          tx.SelectAll();

          return iLength = tx.TextChars[tx.Selection.Length].Bounds.Right -
                 tx.TextChars[tx.Selection.Start + 1].Bounds.Left;
     }
}
复制代码

下面的代码演示了如何使用以上方法测量出文本的长度:

 
Selection newSelection = new Selection();
newSelection.Text = "Hello dWorld";
newSelection.FontSize = 600;
newSelection.FontName = "Wingdings";

int length = MeasureTextControlString(newSelection, textControl1.FormattingPrinter);
复制代码

关于葡萄城

赋能开发者!葡萄城是专业的集开发工具、商业智能解决方案、低代码开发平台于一身的软件和服务提供商,为超过 75% 的全球财富 500 强企业提供服务。葡萄城专注控件软件领域30年,希望通过模块化的开发控件、灵活的低代码应用开发平台等一系列开发工具、解决方案和服务,帮助开发者快速响应复杂多变的业务需求,最大程度地发挥开发者的才智和潜能,让开发者的 IT 人生更从容更美好。

了解详情,请访问葡萄城官网