ダイナミックな画像表示制御----------のWinFormコントロールの開発シリーズ

PictureBoxコントロールは、.NETに付属しているコントロールの画像のGIF形式を表示することはできませんImageAnimatorの画像を処理するためのフレームクラスを。

  ///  <まとめ> 
  /// 動画表示制御
   ///  </要約> 
  [(ToolboxItem 真の)]
  [DefaultProperty(" 画像" )]
  [説明(動画表示制御)]
   パブリック パーシャル クラスAnimationImageExt:コントロール
  {
    ///  <まとめ> 
    /// フレーム画像寸法属性
     ///  </要約> 
    プライベートFrameDimension FrameDimensionと、

    プライベートイメージイメージ= NULL ;
     ///  <まとめ>    
    /// 画像を表示する   
     ///  </要約> 
    [(閲覧可能真の)]
    【のDefaultValue(ヌル)]
    [説明(表示する画像)]
     パブリック画像イメージ
    {
      取得 { 返す この.imageを。}
       セット
      {
        もしこの .image == nullの &&値== nullのリターンもし(値== NULL// 清除图片
        {
           場合この.isAnimation)
          {
            この.StopAnimation();
          }
          この .image = 値;
          この.Invalidate();
        }
        他に// ロード画像
        {
           IFこの.isAnimation)
          {
            この.StopAnimation();
          }
          この .image = 値;
          ロックこの.image)
          {
            この .isAnimation = ImageAnimator.CanAnimate(この.image)。
            もしこの .isAnimation)// GIF图片
            {
              GUID [] GUID = この.image.FrameDimensionsList。
              この .frameDimension = 新しい FrameDimension(GUID [ 0 ])。
              この .frameCount = この .image.GetFrameCount(この.frameDimension)。
              この .currentFrame = 0 ;
              この .image.SelectActiveFrame(この .frameDimension、この.currentFrame)。
              この.Invalidate();
              この.StartAnimation();
            }
            他に// 普通图片
            {
               この .frameCount = 1 ;
              この .currentFrame = 0 ;
              この.Invalidate();
            }
          }
        }
      }
    }

    プライベート BOOLのisAnimation;
     ///  <まとめ>    
    /// 動画像か   
     ///  </要約>   
    [(閲覧可能偽へ)]
    【のDefaultValue()]
    [説明(映画か)]
     パブリック BOOLのIsAnimation
    {
      取得 { 返す この.isAnimationを。}
    }

    プライベート int型 frameCount = 1。;
     ///  <要約>    
    /// すべての画像フレーム。   
    ///  </要約>   
    [(閲覧可能偽へ)]
    [のDefaultValue(1 )]
    [説明(総フレーム数の画像)]
     パブリック int型FrameCountは
    {
      取得 { 返す この.frameCountを。}
    }

    プライベート INTに、currentFrame = 0 ;
     ///  <要約>    
    /// フレームインデックスが現在再生中   
     ///  </要約>    
    [(閲覧可能偽へ)]
    [のDefaultValue(0 )]
    [説明(現在再生中のフレーム番号)]
     パブリック int型に、currentFrameは、
    {
      取得 { 返す この.currentFrameを。}
    }

    保護された オーバーライドサイズDefaultSize
    {
      取得する
      {
        返す 新しいサイズ(100100 );
      }
    }

    公共AnimationImageExt()
    {
      するSetStyle(ControlStyles.UserPaint、真の);
      するSetStyle(ControlStyles.AllPaintingInWmPaint、真の);
      するSetStyle(ControlStyles.OptimizedDoubleBuffer、真の);
      するSetStyle(ControlStyles.ResizeRedraw、真の);
      するSetStyle(ControlStyles.SupportsTransparentBackColor、真の);

      InitializeComponent();
      この .BackColor = Color.Transparent。
    }

    保護された オーバーライド ボイドのOnPaint(PaintEventArgsのe)の
    {
      ベース.OnPaint(E);

      もしこの .image!= nullの
      {
        グラフィックG = e.Graphics。
        g.DrawImage(この .image、新しいポイント(00 ));
      }
    }

    ///  <まとめ>    
    /// 動画のループ再生を開始   
     ///  </要約>    
    プライベート ボイドstartAnimation()
    {
      ロックこの.image)
      {
        ImageAnimator.Animate(この .image、新しい EventHandlerの(この.FrameChanged));
      }
    }

    ///  <まとめ>    
    /// 動画の停止ループ再生  
     ///  </要約>    
    プライベート ボイドstopAnimation()
    {
      ロックこの.image)
      {
        ImageAnimator.StopAnimate(この .image、新しい EventHandlerの(この.FrameChanged));
        この.resetProperty();
      }
    }

    ///  <まとめ> 
    /// リセット画像情報
     ///  </要約> 
    プライベート ボイドResetProperty()
    {
      この .frameDimension = nullをこの .isAnimation = ;
      この .frameCount = 0 ;
      この .currentFrame = - 1 ;
    }

    ///  <要約> 
    /// 当前帧更改事件
     ///  </要約> 
    ///  <PARAM NAME = "差出人"> </ param>の
    ///  <PARAM NAME = "E"> </ param>の
    プライベート ボイドは FrameChanged(オブジェクト送信者、EventArgsの電子)
    {
      この .currentFrame = この .currentFrame + 1 > = この .frameCount?0この .currentFrame + 1 ロックこの.image)
      {
        この .image.SelectActiveFrame(この .frameDimension、この.currentFrame)。
        この.Invalidate();
      }
    }


  }

 ダウンロード出典:動画表示制御.zipファイル

おすすめ

転載: www.cnblogs.com/tlmbem/p/11223789.html