大家好我正在制作一个在屏幕上滚动文字的应用程序我有这个工作 文本的长时间与屏幕上某些字体样式冻结/滞后的小异常是想知道是否有人对此有一些见解
void t_Tick(object sender, EventArgs e)
{
STimer t = sender as STimer;
Label b = (Label)Controls[t.Name.Substring(1)];
string sScrollText = b.Text;
sScrollText = sScrollText.Substring(1,
sScrollText.Length - 1) + sScrollText.Substring(0, 1);
b.Text = sScrollText;
}
这是使标签滚动示例的代码
100 Gerogia字体及此文本
1886年,当一些地方通过禁酒令时,约翰彭伯顿开发了可口可乐 - 他之前的法国葡萄酒古柯的非酒精版。最初,Pemberton将可口可乐作为一种专利药出售,每瓶苏打水喷泉5美分;他声称可口可乐可以治疗头痛,吗啡成瘾和阳痿等疾病。从1894年开始,可口可乐开始以瓶装出售,并在室外墙壁上宣传该产品
我找到的随机段落进行测试
运行良好
100 Segoe Script
冻结和L Hor可怕到目前为止你无法关闭程序
似乎在字体上将标签的物理尺寸增加到一个大的框冻结程序
任何建议都将不胜感激
答案 0 :(得分:0)
您的问题与您使用的Fonts
无关,而与AutoSize
的{{1}}属性有关。
由于您使用了很长的文本,因此严重超出其容量。
您有两种选择可以更改:
您可以设置Label
并将AutoSize = false
调整为合适的大小,甚至可以锚定它。您可以使用Label
找出修正LAbel尺寸所需的高度。
您只能分配文本的一小部分,而不会将其展开得如此之大。您可以使用MeasureString
查找可以显示多少个字符的近似值,然后添加一些可能或使用您想要允许的最大像素宽度。
在设置MeasureString
之后,可以使用以下方法调整要显示的文本的部分长度; Label
的{{1}}:
Height
顺便说一句:显示器总是看起来有些不稳定,因为你要按字符前进,除非你选择像Font
这样的固定字体,否则它既不平滑也不恒定。基于每个像素的绘画看起来好多了,但当然是更多的工作。或者可以将using (Graphics G = label1.CreateGraphics() )
{
// measure the size the label would need to display the text:
SizeF size = G.MeasureString(sScrollText, label1.Font);
// either restrict the text length:
int maxWidth = 1600;
len = (int) (sScrollText.Length * maxWidth / size.Width);
// or set the Label's Height:
label1.Height = (int) size.Height + 1;
}
移到包含Consolas
的左侧..