using System.Collections; using System.Collections.Generic; using System.Drawing; namespace Microsoft.Windows.Forms.Animate { /// <summary> /// 动画操作集合 /// </summary> internal class AnimationOperations : DisposableMini, IEnumerable<AnimationFrame> { //操作集合 private List<AnimationFrame> m_Frames = new List<AnimationFrame>(); private bool m_Cleared; /// <summary> /// 获取是否清空关键帧 /// </summary> public bool Cleared { get { return this.m_Cleared; } } private Size? m_Size; /// <summary> /// 获取要改变的大小 /// </summary> public Size Size { get { return this.m_Size.Value; } } /// <summary> /// 获取是否要改变大小 /// </summary> public bool Resized { get { return this.m_Size != null; } } /// <summary> /// 改变大小操作 /// </summary> /// <param name="size">要改变的大小</param> public void Resize(Size size) { this.m_Size = size; } /// <summary> /// 添加关键帧操作 /// </summary> /// <param name="frame">关键帧</param> public void AddFrame(AnimationFrame frame) { this.m_Frames.Add(frame); } /// <summary> /// 清空关键帧操作 /// </summary> public void ClearFrame() { foreach (AnimationFrame frame in this.m_Frames) frame.Dispose(); this.m_Frames.Clear(); this.m_Cleared = true; } /// <summary> /// 使用完毕,清空操作 /// </summary> public void Clear() { this.m_Frames.Clear(); this.m_Cleared = false; this.m_Size = null; } /// <summary> /// 获取枚举器 /// </summary> /// <returns>枚举器</returns> public IEnumerator<AnimationFrame> GetEnumerator() { return this.m_Frames.GetEnumerator(); } /// <summary> /// 获取枚举器 /// </summary> /// <returns>枚举器</returns> IEnumerator IEnumerable.GetEnumerator() { return (this.m_Frames as IEnumerable).GetEnumerator(); } /// <summary> /// 释放资源 /// </summary> /// <param name="disposing">释放托管资源为 true,否则为 false</param> protected override void Dispose(bool disposing) { if (this.m_Frames != null) { foreach (AnimationFrame frame in this.m_Frames) frame.Dispose(); this.m_Frames.Clear(); this.m_Frames = null; } } } }