如游戏中,一张图片中包含了动画的所有帧。其实没必要做这么个控件,只需要将动画做成Gif,然后使用PictureBox加载这个Gif就可以了~囧。但是为了验证是否两者有区别,特意做了这个动画控件,直接丢弃了太可惜,记录一下吧~~以后需要可以直接用。
步骤:
1. 添加组件AnimationControl,添加一个Sytem.Windows.Timer作为帧管理器。
2. 注册Timer的Tick事件作为帧数刷新控件。
animationTimer.Tick += (sender, e) =>
{
Invalidate();
};
3. 添加属性Interval、PictureSize分别制定刷新速率,动作图片大小。
4. 定义变量imageCount,ImageIndex分别获取图片中动作的总数、当前在第几个动作。
5. 定义变量rowCount,columnCount分别获取图片中行、列个数。
6. 重载OnPaint事件,画出当前帧动作。
protected override void OnPaint(PaintEventArgs pe)
{
//base.OnPaint(pe);
if (this.Image != null && rowCount > 0 && columnCount > 0)
{
Graphics g = pe.Graphics;
g.Clear(this.BackColor);
g.DrawImage(this.Image,
new Rectangle(0, 0, this.Width, this.