在TextControl中测量文本长度

在 TX Text Control X8 版本中,WinForms和WPF系统中可以使用一个不可见的ServerTextControl组件,通过该组件可以得到文本的实际长度,下面的代码简单演示了该功能:

发布于 2012/11/16 00:00

在多数系统中,我们经常会判断在指定的显示范围内是否能够显示下指定的文本长度,此时我们会用到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);
复制代码

关于葡萄城

葡萄城软件是专业的软件开发技术和低代码平台提供商,以“赋能开发者”为使命,致力于通过表格控件、低代码和BI等各类软件开发工具和服务,一站式满足开发者需求,帮助企业提升开发效率并创新开发模式。葡萄城开发技术始于1980年,40余年来始终聚焦软件开发技术,有深厚的技术积累和丰富的产品线。是业界能够同时赋能软件开发和低代码开发的企业。凭借过硬的产品能力、活跃的用户社区和丰富的伙伴生态,与超过3000家合作伙伴紧密合作,产品广泛应用于信息和软件服务、制造、交通运输、建筑、金融、能源、教育、公共管理等支柱产业。

推荐相关案例
推荐相关资源
关注微信
葡萄城社区二维码

关注“葡萄城社区”

活字格低代码二维码

关注“活字格低代码”

想了解更多信息,请联系我们, 随时掌握技术资源和产品动态