一個(gè)專(zhuān)用于顯示GIF的控件 GifBox_第1頁(yè)
一個(gè)專(zhuān)用于顯示GIF的控件 GifBox_第2頁(yè)
一個(gè)專(zhuān)用于顯示GIF的控件 GifBox_第3頁(yè)
一個(gè)專(zhuān)用于顯示GIF的控件 GifBox_第4頁(yè)
一個(gè)專(zhuān)用于顯示GIF的控件 GifBox_第5頁(yè)
已閱讀5頁(yè),還剩1頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、GifBox是一個(gè)專(zhuān)用于顯示GIF圖片的控件,當(dāng)然PictureBox也可以顯示,但是當(dāng)我在寫(xiě) 一個(gè)類(lèi)似QQ表情控件的時(shí)候,總感覺(jué)它顯示GIF的時(shí)候有點(diǎn)停頓的感覺(jué),然后就寫(xiě)了這個(gè)比較 簡(jiǎn)單的控件,代碼不是很多,但是卻得到了我想要的效果。這里介紹下用到得一個(gè)重要的.NET框架中的類(lèi):ImageAnimator,動(dòng)畫(huà)處理包含基于時(shí)間的 幀的圖像。這是一個(gè)全部是靜態(tài)函數(shù)的類(lèi),我們看看他包含的幾個(gè)方法: using System;namespace System.Drawing/摘要:/動(dòng)畫(huà)處理包含基于時(shí)間的幀的圖像。public sealed class ImageAnimator/摘要:/將多幀圖

2、像顯示為動(dòng)畫(huà)。/參數(shù):/ onFrameChangedHandler:/ 一個(gè)EventHandler對(duì)象,它指定在動(dòng)畫(huà)幀發(fā)生更改時(shí)調(diào)用的方法。/ image:/ 要?jiǎng)赢?huà)處理的System.Drawing.Image對(duì)象。/返回結(jié)果:/此方法不返回值。public static void Animate(Image image, EventHandler onFrameChangedHandle r);/摘要:/返回一個(gè)布爾值,該值指示指定圖像是否包含基于時(shí)間的幀。/參數(shù):/ image:/要測(cè)試的 System.Drawing.Image 對(duì)象。/返回結(jié)果:/如果指定圖像包含基于時(shí)間的幀,則

3、此方法返回true;否則返回false。public static bool CanAnimate(Image image);/摘要:/終止正在運(yùn)行的動(dòng)畫(huà)。/ /參數(shù):/ onFrameChangedHandler:/ 一個(gè)EventHandler對(duì)象,它指定在動(dòng)畫(huà)幀發(fā)生更改時(shí)調(diào)用的方法。/ image:/要停止動(dòng)畫(huà)處理的System.Drawing.Image對(duì)象。/返回結(jié)果:/此方法不返回值。public static void StopAnimate(Image image, EventHandler onFrameChangedHand ler);/摘要:/使該幀在當(dāng)前正被動(dòng)畫(huà)處理的所

4、有圖像中前移。新幀在下一次呈現(xiàn)圖像時(shí)繪制。/返回結(jié)果:/此方法不返回值。public static void UpdateFrames();/摘要:/使幀在指定的圖像中前移。新幀在下一次呈現(xiàn)圖像時(shí)繪制。此方法只適用于包含基于時(shí)間的幀的圖像。/參數(shù):/ image:/要為其更新幀的System.Drawing.Image對(duì)象。/返回結(jié)果:/此方法不返回值。public static void UpdateFrames(Image image);看了就應(yīng)該很容易就理解這個(gè)類(lèi)和每個(gè)方法的作用了。有了這個(gè)類(lèi),實(shí)現(xiàn)我想要的功能就簡(jiǎn)單了:),繼承Control,添加一些需要的 屬性,然后最重要的就是重寫(xiě)O

5、nPaint函數(shù)了。protected override void OnPaint(PaintEventArgs e)base.OnPaint(e);if (_image != null)/每次畫(huà)之前更新到圖片的下一幀。UpdateImage();e.Graphics.DrawImage(_image,ImageRectangle,0,0,_image.Width,_image.Height,GraphicsUnit.Pixel);ControlPaint.DrawBorder(e.Graphics,ClientRectangle,_borderColor,ButtonBorderStyle.

6、Solid);需要注意的是每次畫(huà)之前都要更新到圖片的下一幀。下面介紹第三種方法,這種方法不需要對(duì)ActiveX控件的引用,需要用到我前面寫(xiě)的一篇文章(一 個(gè)專(zhuān)用于顯示GIF的控件GifBox)中的GifBox控件,看看實(shí)現(xiàn)的方法:public bool InsertImageUseGifBox(string path)日田(try捽(IGifBox gif = new GifBox();Igif.BackColor = base.BackColor;Igif.Image = Image.FromFile(path);RichEditOle.InsertControl(gif);return true;catch (Exception)白由return false;通過(guò)上面三個(gè)方法,我們就可以很方便的把GIF插入到RichTextBox中了,看看使用的代碼:日國(guó)if(radUseImageOle.Checked)chatRichTextBox1.InsertImageUseImageOle(.Face211.gif);else if (radUseDynamic.Checked)日田chatRi

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論