コード例 #1
0
        public FormMain()
        {
            InitializeComponent();
            ias = new AnimatorImage(Properties.Resources.img); // 获取资源,实例化动画类
            // 通过委托在不同线程间访问控件
            Action SetGroupBoxEnabled  = () => groupBox1.Enabled = true;
            Action SetGroupBoxDisabled = () => groupBox1.Enabled = false;

            ias.DrawStarted   += (s, e) => this.Invoke(SetGroupBoxDisabled);
            ias.DrawCompleted += (s, e) => this.Invoke(SetGroupBoxEnabled);
            // Invalidate()方法底层并不涉及控件界面,只是发送消息,因此可以在不同线程间调用,即它是线程安全的
            ias.Redraw += (s, e) => pictureBox1.Invalidate(e.ClipRectangle);
            // 设置速度
            trackBar1.Value = ias.Delay;
        }
コード例 #2
0
        public AniPicture()
        {
            InitializeComponent();

            if (s_ImageResultBackGround == null)
            {
                s_ImageResultBackGround         = Properties.Resources.结果背景;
                s_BitmapResultBackGround        = (Bitmap)s_ImageResultBackGround;
                s_AnimatorImageResultBackGround = new AnimatorImage(s_BitmapResultBackGround);
            }

            ias   = s_AnimatorImageResultBackGround;// 获取资源,实例化动画类
            Image = s_BitmapResultBackGround;

            // 调试的时候发现 “下一页” 用s_ImageResultBackGround 赋值, 会导致异常, 改为使用 Properties.Resources.结果背景
            pictureBox1.Image = Properties.Resources.结果背景; // s_ImageResultBackGround;

            this.Size               = new Size(100, 100);
            pictureBox1.MouseMove  += new MouseEventHandler(pictureBox1_MouseMove);
            pictureBox1.MouseDown  += new MouseEventHandler(pictureBox1_MouseDown);
            pictureBox1.MouseUp    += new MouseEventHandler(pictureBox1_MouseUp);
            pictureBox1.MouseHover += new EventHandler(pictureBox1_MouseHover);
        }