C#實(shí)現(xiàn)跑馬燈效果的示例代碼
文章描述
跑馬燈效果,功能效果大家應(yīng)該都知道,就是當(dāng)我們的文字過(guò)長(zhǎng),整個(gè)頁(yè)面放不下的時(shí)候(一般用于公告等),可以讓它自動(dòng)實(shí)現(xiàn)來(lái)回滾動(dòng),以讓客戶(hù)可以看到完整的信息(雖然要多等一會(huì)兒時(shí)間)。
其實(shí)對(duì)于Winform這種技術(shù),實(shí)現(xiàn)任何的動(dòng)態(tài)效果相對(duì)來(lái)說(shuō)都比較麻煩。而且一般都需要搭配定時(shí)器使用,當(dāng)然,這次要寫(xiě)的跑馬燈效果也是一樣的,使用了System.Timers.Timer
來(lái)實(shí)現(xiàn),關(guān)于其他定時(shí)器以及用法,之前文章有寫(xiě)過(guò),有興趣的可以翻一下。
因?yàn)槭褂寐闊?,所以要進(jìn)行封裝,所以要不斷的造輪子(盡管是重復(fù)的),但重復(fù)也是一個(gè)加強(qiáng)記憶以及不斷深入的過(guò)程,我認(rèn)為這并不是多余的。因此,為了方便調(diào)用,還是用自定義控件封裝一下屬性,使用的時(shí)候只要設(shè)置屬性即可。
開(kāi)發(fā)環(huán)境
.NET Framework版本:4.5
開(kāi)發(fā)工具
Visual Studio 2013
實(shí)現(xiàn)代碼
public partial class CustomLable : Label { System.Timers.Timer timer = new System.Timers.Timer(200); int offset = 5;//偏移量 PointF textPoint; public CustomLable() { InitializeComponent(); textPoint = new PointF(this.Width, 0); timer.Elapsed += (s, e) => { try { if (!IsDisposed) { Graphics g = CreateGraphics(); SizeF textSize = g.MeasureString(Text, Font); textPoint.X -= offset; if (textPoint.X <= -textSize.Width) { textPoint.X = Width; } g.Clear(BackColor); g.DrawString(Text,Font, new SolidBrush(ForeColor), textPoint); } } catch { } }; } protected override void OnPaint(PaintEventArgs pe) { base.OnPaint(pe); } private bool _IsMarquee; [Browsable(true)] [Description("是否以跑馬燈效果顯示")] public bool IsMarquee { get { return _IsMarquee; } set { _IsMarquee = value; Marquee(); } } public void Marquee() { if (IsMarquee) { timer.Start(); } else { timer.Stop(); textPoint = new PointF(0, 0); try { if (!IsDisposed) { Graphics g = CreateGraphics(); g.Clear(BackColor); g.DrawString(Text, Font, new SolidBrush(ForeColor), textPoint); } } } } }
private void button1_Click(object sender, EventArgs e) { customLable1.IsMarquee = !customLable1.IsMarquee; }
實(shí)現(xiàn)效果
代碼解析:由于我們直接是在IsMarquee的set屬性中就調(diào)用了Timer事件;所以即便不運(yùn)行,在設(shè)計(jì)窗體時(shí)改變屬性就可以直接看到效果。
到此這篇關(guān)于C#實(shí)現(xiàn)跑馬燈效果的示例代碼的文章就介紹到這了,更多相關(guān)C#跑馬燈內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#使用StopWatch獲取程序毫秒級(jí)執(zhí)行時(shí)間的方法
這篇文章主要介紹了C#使用StopWatch獲取程序毫秒級(jí)執(zhí)行時(shí)間的方法,涉及C#操作時(shí)間的相關(guān)技巧,需要的朋友可以參考下2015-04-04C#開(kāi)發(fā)微信門(mén)戶(hù)及應(yīng)用(3) 文本消息和圖文消息應(yīng)答
這篇文章主要為大家詳細(xì)介紹了C#開(kāi)發(fā)微信門(mén)戶(hù)及應(yīng)用第二篇,微信文本消息和圖文消息的應(yīng)答,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06C#客戶(hù)端程序Visual Studio遠(yuǎn)程調(diào)試的方法詳解
這篇文章主要給大家介紹了關(guān)于C#客戶(hù)端程序Visual Studio遠(yuǎn)程調(diào)試的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09C#實(shí)現(xiàn)身份證驗(yàn)證功能的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)身份證驗(yàn)證功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下2022-12-12C#操作本地文件及保存文件到數(shù)據(jù)庫(kù)的基本方法總結(jié)
C#使用System.IO中的文件操作方法在Windows系統(tǒng)中處理本地文件相當(dāng)順手,這里我們還總結(jié)了在Oracle中保存文件的方法,嗯,接下來(lái)就來(lái)看看整理的C#操作本地文件及保存文件到數(shù)據(jù)庫(kù)的基本方法總結(jié)2016-05-05