measurestring(measurestring算光标)

http://www.itjxue.com  2023-02-18 14:33  来源:未知  点击次数: 

关于combobox的列表长度,该怎么解决

当焦点到达下拉框顶上时,遍历下拉框每个item,转换为字符串后,根据下拉框控件当前的字体和大小,计算item显示到界面上的长度,与下拉框长度做不对比。计算文本在界面上的显示长度例子:

string measureString = "Measure String";

Font stringFont = new Font("Arial", 16);//可以是下拉框控件的Font属性

// Measure string.

SizeF stringSize = new SizeF();

stringSize = e.Graphics.MeasureString(measureString, stringFont);

C# WinForm,Graphics.MeasureString 计算不准确的坑

Graphics.MeasureString 可以计算出指定字符串在给定字体 Font 的尺寸 SizeF ,它的计算有坑:如果把字符串拆开成一个一个单字字符串并逐个计算尺寸,然后把 Width 加起来,你会发现并不一定等于完整的字符串计算出来的 Width 。

经过一番折腾,最终发现关键在于字符串中是否有空格。

举个例子

执行结果

字符串 foo 拆开后计算出来的 Width 总和为16,和 foo 完整计算出来 Width 24不同,关键问题显然是空格的 Width 居然为0。

经过测试, Graphics.MeasureString 计算字符串 Width 时会忽略掉头尾的空格后再进行计算,而夹在字符串中间的空格却会纳入计算(等于帮你给字符串自动做了次 .Trim() ,这坑是什么操作?),因此单独计算空格的 Width 实际上计算的空字符串的 Width ,因此为0。

所以,如果你希望单独得到空格的准确 Width ,简单的方法是:

1.计算出"a a"的 Width1 = w1;

2.计算出"aa"的 Width = w2;

3.用w1 - w2,就可以得到空格的 Width 。

c# combobox下拉框长度不够,怎么焦点在下拉框项上时出现提示

当焦点到达下拉框顶上时,遍历下拉框每个item,转换为字符串后,根据下拉框控件当前的字体和大小,计算item显示到界面上的长度,与下拉框长度做不对比。计算文本在界面上的显示长度例子:

string measureString = "Measure String";

Font stringFont = new Font("Arial", 16);//可以是下拉框控件的Font属性

// Measure string.

SizeF stringSize = new SizeF();

stringSize = e.Graphics.MeasureString(measureString, stringFont);

如何在Winform中计算文字尺寸

c#中gdi+提供了测量文字的具体代码,你可以使用下面的代码:

graphics

g

=

treeview1.creategraphics();

size

size

=

g.measurestring();

你把要测量的文字传入measurestring函数,最后返回的size就是文字的具体尺寸。

(责任编辑:IT教学网)

更多

推荐其它软件文章