滚动标签滞后问题

时间:2014-11-26 15:55:44

标签: c# scroll labels

大家好我正在制作一个在屏幕上滚动文字的应用程序我有这个工作 文本的长时间与屏幕上某些字体样式冻结/滞后的小异常是想知道是否有人对此有一些见解

    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可怕到目前为止你无法关闭程序

似乎在字体上将标签的物理尺寸增加到一个大的框冻结程序

任何建议都将不胜感激

1 个答案:

答案 0 :(得分:0)

您的问题与您使用的Fonts无关,而与AutoSize的{​​{1}}属性有关。

由于您使用了很长的文本,因此严重超出其容量。

您有两种选择可以更改:

  • 您可以设置Label并将AutoSize = false调整为合适的大小,甚至可以锚定它。您可以使用Label找出修正LAbel尺寸所需的高度。

  • 您只能分配文本的一小部分,而不会将其展开得如此之大。您可以使用MeasureString查找可以显示多少个字符的近似值,然后添加一些可能或使用您想要允许的最大像素宽度。

BTW:甚至有一个像素的最大数量(around 30k)一个控制可能需要在它“放弃”之前显示其内容并且根本不显示任何内容。就在这里,不同的字体和FontSizes会有所不同..

在设置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的左侧..