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; }
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); }