MyGif.cs
上传用户:lqb116
上传日期:2014-04-04
资源大小:2712k
文件大小:3k
源码类别:

P2P编程

开发平台:

C#

  1. using System;
  2. using System.Collections;
  3. using System.ComponentModel;
  4. using System.Drawing;
  5. using System.Data;
  6. using System.Windows.Forms;
  7. using LanMsg.Gif.Components;
  8. namespace LanMsg.gif
  9. {
  10. /// <summary>
  11. /// MyGif 的摘要说明。
  12. /// </summary>
  13. public class MyGif : System.Windows.Forms.UserControl
  14. {
  15. /// <summary> 
  16. /// 必需的设计器变量。
  17. /// </summary>
  18. private System.ComponentModel.Container components = null;
  19. public MyGif()
  20. {
  21. // 该调用是 Windows.Forms 窗体设计器所必需的。
  22. InitializeComponent();
  23. intImages();
  24.            
  25. // TODO: 在 InitializeComponent 调用后添加任何初始化
  26. }
  27. /// <summary> 
  28. /// 清理所有正在使用的资源。
  29. /// </summary>
  30. protected override void Dispose( bool disposing )
  31. {
  32. if( disposing )
  33. {
  34. if(components != null)
  35. {
  36. components.Dispose();
  37. }
  38. }
  39. base.Dispose( disposing );
  40. }
  41. #region 组件设计器生成的代码
  42. /// <summary> 
  43. /// 设计器支持所需的方法 - 不要使用代码编辑器 
  44. /// 修改此方法的内容。
  45. /// </summary>
  46. private void InitializeComponent()
  47. {
  48. components = new System.ComponentModel.Container();
  49. }
  50. #endregion
  51.         private bool IsPlay=false;
  52. private pic[] pics;
  53. private class pic
  54. {
  55. public System.Drawing.Image image;
  56. public int Delay=100;
  57. public  pic()
  58. {
  59. }
  60. }
  61. private string fileName=@"C:Documents and Settingsadmin桌面page_cr14.gif";
  62. public string FileName
  63. {
  64. set{
  65. fileName=value;
  66. IsPlay=false;
  67. intImages();
  68. }
  69. get{return fileName;}
  70. }
  71.  private int FrameCount=0;
  72. public void play()//播放GIF
  73. {
  74. System.Threading.Thread RThread = new System.Threading.Thread( new System.Threading.ThreadStart(player)); 
  75. RThread.Start(); //开始发送文件
  76. }
  77. private void player()
  78. {
  79. int i=0;
  80. while(IsPlay)
  81. {  
  82. if(i==FrameCount )i=0;
  83. this.BackgroundImage   =this.pics[i].image ;  // frame i
  84.     this.Refresh();
  85. System.Threading.Thread.Sleep(this.pics[i].Delay );
  86. i++;
  87. }
  88. }
  89. private void intImages()
  90. {
  91. if(fileName=="")return;
  92. if(new System.IO.FileInfo(fileName).Exists)
  93. {
  94. System.Drawing.Image image=System.Drawing.Image.FromFile(fileName);
  95. this.Size=image.Size ;
  96. image.Dispose();
  97. GifDecoder gifDecoder = new GifDecoder();
  98. gifDecoder.Read(fileName);
  99. FrameCount= gifDecoder.GetFrameCount(); 
  100. pics= new pic[FrameCount];
  101. for(int i=0;  i < FrameCount;i++)
  102. {
  103. pics[i].image = gifDecoder.GetFrame(i);  // frame i
  104. pics[i].Delay = gifDecoder.GetDelay(i);  // frame i
  105. }
  106. }
  107. IsPlay=true;
  108.     play();//播放GIF
  109. }
  110. }
  111. }