设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 234|回复: 2
打印 上一主题 下一主题

CustomControl打造WPF版的Marquee

[复制链接]
跳转到指定楼层
1#
发表于 2009-3-16 20:31:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我们知道在html中有一个marquee标签,可以很方便的实现文字滚动的效果,比如如下简单的声明:
<marquee loop="3" behavior="scroll">文本信息<marquee>
在WPF里面,当然,我们可以用Animation和Storyboard来达到同样的效果,但是感觉总是不那么好,每次都需要做动画。而且设置动画的属性很麻烦。能不能就像HTML简单的声明就行了呢?比如:
<l:Marquee Content="123" Direction="Right" Behavior="Scroll" ScrollAmount="20" ScrollDelay="500"/>
能够这样简单的指定属性来使用。
下面我们就用开发CustomControl的方式来打造一个Marquee控件。
首先,我们添加一个自定义控件,这个控件继承自ContentControl,因为它的里面可以放任何东西,而不仅仅限于文本。
接着,仿造html中的marquee标签,定义一些必要的属性。这些属性都是DependencyProperty。

接下来我们需要写动画的逻辑了。有三种方式来写这个动画:
1、利用系统的Animation和Storyboard
2、在CompositionTarget的Rendering事件中写动画
3、利用DispatcherTimer写动画
我们这儿动画的行为有好几种,比较复杂,利用系统的动画方式来写会很麻烦,并且这儿有一个ScrollDelay属性来控制延时,在CompositionTarget的Rendering事件中不太好控制,因此,最后我选择用DispatcherTimer,在它的Tick事件中写动画逻辑。
动画的逻辑主要就是改变Content的位移,需要注意的是,这个位移是通过TranlateTransform来实现的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-18 10:30 , Processed in 0.085373 second(s), 8 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

快速回复 返回顶部 返回列表