[急求] C# Winform 不间断走马灯,多行文本,并且需要英文中文(36Px大字体)隔行循环

aRayn 2010-11-16 02:40:40
需求:
1、不间断走马灯效果(从下到上移动)
2、内容显示形式为英文中文隔行循环,而且英文和中文用不同字体,字体大于36Px(一号)
3、有循环次数、速度设置

注:数据量至少需要支持100条(英文50行+中文50行)


我试过用以下方法
1、Panel+N*Label+Timer, 把所有Label装载到一个Panel中,然后由底部向顶部滚动Panel. 实际效果:数据多了就会卡(因为动态加载了太多Label),滚动效果不平滑,而且依赖于CPU和内存等硬件的效能。

2、Panel+List<Label>+Label+Timer, 把Label赋值给List<Label>,然后再动态把List<Label>由下往上逐个把List<Label>加载到Panel中,通过Timer改变每个List<Label>的x坐标值, 产生滚动效果. 实际效果:虽然比方法一看上去少用了Label,但由于每次Timer.Tick都要计算N次Label.x坐标值,再加上Label字体比较大, 数据多的时候效率非常低.

3、webBrowser, 把数据写入Html中,然后利用Javascript来运行走马灯. 实际效果:这种方法实现起来最简单,加载数据也很快,但还是出现数据多了会有点卡, 大概还是因为字体较大, CPU占用比较明显.



没办法了,比较着急,跪求高手赐教。看了坛子很多思路是用 Theard + GDI 来实现,不知道这种方法是否能解决效率(卡)问题?

...全文
421 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
lqc11love 2011-01-04
  • 打赏
  • 举报
回复
最后怎么实现的??
aRayn 2010-11-22
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 gooidea 的回复:]
给你一种基于Html的方法,请留Email
[/Quote]

谢谢,尽管没有能够得到我期望的解决方法,不过至少暂时先解决问题。
gooidea 2010-11-18
  • 打赏
  • 举报
回复
给你一种基于Html的方法,请留Email
aRayn 2010-11-17
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 lucio2007 的回复:]
Panel+N*Label+Timer ,label先全部生成出来,命名带一定的规则,通过Timer 来控制显示和隐藏哪些label[由于在winform里面控件是绝对定位,不知道当visble为false的时候,height还有作用不]
[/Quote]

Panel+N*Label+Timer, 我的确是已经把Label都全部生成了再装载到一个Panel中,然后由底部向顶部滚动Panel.

实际效果:数据行多了,就意味着生成太多Label,滚动效果不平滑,而且依赖于CPU和内存等硬件的效能。
aRayn 2010-11-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 lucio2007 的回复:]
没具体的试过,既然是考虑效率问题,能不能先把所有的文字内容render出来,然后设置panel或者label的visble和height这两个属性,如果是web里面直接设置div之类的display属性
[/Quote]


阁下是写WEB的吧,用Javascript方式,我提供两个经典的走马灯效果:
http://www.popub.net/script/MSClass.html
http://flowplayer.org/tools/scrollable.html
lucio2007 2010-11-17
  • 打赏
  • 举报
回复
Panel+N*Label+Timer ,label先全部生成出来,命名带一定的规则,通过Timer 来控制显示和隐藏哪些label[由于在winform里面控件是绝对定位,不知道当visble为false的时候,height还有作用不]
小海贼 2010-11-17
  • 打赏
  • 举报
回复
用vc或vb写成控件形式,在试一下看,是否还会卡
aRayn 2010-11-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 kscode 的回复:]
Panel+N*Label+Timer
将N变成2:一个显示中文,一个显示英文,用count计数
[/Quote]

这是什么意思?屏幕上只显示两行吗?
我的目的是多行的轮播滚动
lucio2007 2010-11-17
  • 打赏
  • 举报
回复
没具体的试过,既然是考虑效率问题,能不能先把所有的文字内容render出来,然后设置panel或者label的visble和height这两个属性,如果是web里面直接设置div之类的display属性
JiuchunYoung 2010-11-17
  • 打赏
  • 举报
回复
我也关注一下 我是做web 的 所以帮不了你 希望解决的时候 告诉 怎么做的 呵呵 这个有点难度的 如果是 网页 走马灯 我可以写的
zhuoyue9935 2010-11-17
  • 打赏
  • 举报
回复
有点问题
kscode 2010-11-17
  • 打赏
  • 举报
回复
Panel+N*Label+Timer
将N变成2:一个显示中文,一个显示英文,用count计数
luoch2 2010-11-17
  • 打赏
  • 举报
回复
高手还没出现……
gooidea 2010-11-17
  • 打赏
  • 举报
回复
我想知道,关注一下……
aRayn 2010-11-16
  • 打赏
  • 举报
回复
着急啊,高手行行好帮帮忙吧……

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧