/// <summary> /// 移除一个自定义系统按钮 /// </summary> /// <param name="item">要移除的自定义系统按钮</param> public void Remove(CmSysButton item) { int index = this.IndexOf(item); if (-1 != index) //如果存在元素 那么根据索引移除 { this.RemoveAt(index); } }
//画窗体按钮 protected override void OnRenderSkinFormControlBox( SkinFormControlBoxRenderEventArgs e) { CCSkinMain form = e.Form; Graphics g = e.Graphics; Rectangle rect = e.ClipRectangle; ControlBoxState state = e.ControlBoxtate; CmSysButton cmSysButton = e.CmSysButton; bool active = e.Active; bool minimizeBox = form.ControlBox && form.MinimizeBox; bool maximizeBox = form.ControlBox && form.MaximizeBox; switch (e.ControlBoxStyle) { case ControlBoxStyle.Close: RenderSkinFormCloseBoxInternal( g, rect, state, active, minimizeBox, maximizeBox, form); break; case ControlBoxStyle.Maximize: RenderSkinFormMaximizeBoxInternal( g, rect, state, active, minimizeBox, form.WindowState == FormWindowState.Maximized, form); break; case ControlBoxStyle.Minimize: RenderSkinFormMinimizeBoxInternal( g, rect, state, active, form); break; case ControlBoxStyle.CmSysBottom: RenderSkinFormCmSysBottomInternal( g, rect, state, active, form, cmSysButton); break; } }
//确认存储空间 private void EnsureSpace(int elements) { if (m_arrItem == null) { m_arrItem = new CmSysButton[Math.Max(elements, 4)]; } else if (this.count + elements > m_arrItem.Length) { CmSysButton[] arrTemp = new CmSysButton[Math.Max(this.count + elements, m_arrItem.Length * 2)]; m_arrItem.CopyTo(arrTemp, 0); m_arrItem = arrTemp; } }
/// <summary> /// 添加一个自定义系统按钮 /// </summary> /// <param name="item">要添加的自定义系统按钮</param> public void Add(CmSysButton item) { if (item == null) //空引用不添加 { throw new ArgumentNullException("Item cannot be null"); } this.EnsureSpace(1); if (-1 == this.IndexOf(item)) { //进制添加重复对象 item.OwnerForm = this.owner; m_arrItem[this.count++] = item; this.owner.Invalidate(); //添加进去是 进行重绘 } }
/// <summary> /// 深拷贝 /// </summary> /// <returns>深度克隆的自定义系统按钮</returns> public CmSysButton Clone() { CmSysButton SysButton = new CmSysButton(); SysButton.Bounds = this.Bounds; SysButton.Location = this.Location; SysButton.size = this.Size; SysButton.ToolTip = this.ToolTip;; SysButton.SysButtonNorml = this.SysButtonNorml; SysButton.SysButtonMouse = this.SysButtonMouse; SysButton.SysButtonDown = this.SysButtonDown; SysButton.OwnerForm = this.OwnerForm; SysButton.Name = this.Name; return(SysButton); }
public SkinFormControlBoxRenderEventArgs( CCSkinMain form, Graphics graphics, Rectangle clipRect, bool active, ControlBoxStyle controlBoxStyle, ControlBoxState controlBoxState, CmSysButton cmSysbutton = null) : base(graphics, clipRect) { _form = form; _active = active; _controlBoxState = controlBoxState; _controlBoxStyle = controlBoxStyle; _CmSysbutton = cmSysbutton; }
/// <summary> /// 根据索引位置插入一个自定义系统按钮 /// </summary> /// <param name="index">索引位置</param> /// <param name="item">要插入的自定义系统按钮</param> public void Insert(int index, CmSysButton item) { if (index < 0 || index >= this.count) { throw new IndexOutOfRangeException("Index was outside the bounds of the array"); } if (item == null) { throw new ArgumentNullException("Item cannot be null"); } this.EnsureSpace(1); for (int i = this.count; i > index; i--) { m_arrItem[i] = m_arrItem[i - 1]; } item.OwnerForm = this.owner; m_arrItem[index] = item; this.count++; this.owner.Invalidate(); }
/// <summary> /// 获取自定义系统按钮所在的索引位置 /// </summary> /// <param name="item">要获取的自定义系统按钮</param> /// <returns>索引位置</returns> public int IndexOf(CmSysButton item) { return(Array.IndexOf <CmSysButton>(m_arrItem, item)); }
/// <summary> /// 判断一个自定义系统按钮是否在集合内 /// </summary> /// <param name="item">要判断的自定义系统按钮</param> /// <returns>是否在自定义系统按钮集合内</returns> public bool Contains(CmSysButton item) { return(this.IndexOf(item) != -1); }
/// <summary> /// 移除一个自定义系统按钮 /// </summary> /// <param name="item">要移除的自定义系统按钮</param> public void Remove(CmSysButton item) { int index = this.IndexOf(item); if (-1 != index) //如果存在元素 那么根据索引移除 this.RemoveAt(index); }
/// <summary> /// 根据索引位置插入一个自定义系统按钮 /// </summary> /// <param name="index">索引位置</param> /// <param name="item">要插入的自定义系统按钮</param> public void Insert(int index, CmSysButton item) { if (index < 0 || index >= this.count) throw new IndexOutOfRangeException("Index was outside the bounds of the array"); if (item == null) throw new ArgumentNullException("Item cannot be null"); this.EnsureSpace(1); for (int i = this.count; i > index; i--) m_arrItem[i] = m_arrItem[i - 1]; item.OwnerForm = this.owner; m_arrItem[index] = item; this.count++; this.owner.Invalidate(); }
/// <summary> /// 获取自定义系统按钮所在的索引位置 /// </summary> /// <param name="item">要获取的自定义系统按钮</param> /// <returns>索引位置</returns> public int IndexOf(CmSysButton item) { return Array.IndexOf<CmSysButton>(m_arrItem, item); }
/// <summary> /// 判断一个自定义系统按钮是否在集合内 /// </summary> /// <param name="item">要判断的自定义系统按钮</param> /// <returns>是否在自定义系统按钮集合内</returns> public bool Contains(CmSysButton item) { return this.IndexOf(item) != -1; }
/// <summary> /// 添加一个列表项的自定义系统按钮 /// </summary> /// <param name="items">要添加的自定义系统按钮的数组</param> public void AddRange(CmSysButton[] items) { if (items == null) throw new ArgumentNullException("Items cannot be null"); this.EnsureSpace(items.Length); try { foreach (CmSysButton item in items) { if (item == null) throw new ArgumentNullException("Item cannot be null"); if (-1 == this.IndexOf(item)) { //重复数据不添加 item.OwnerForm = this.owner; m_arrItem[this.count++] = item; } } } finally { this.owner.Invalidate(); } }
/// <summary> /// 添加一个自定义系统按钮 /// </summary> /// <param name="item">要添加的自定义系统按钮</param> public void Add(CmSysButton item) { if (item == null) //空引用不添加 throw new ArgumentNullException("Item cannot be null"); this.EnsureSpace(1); if (-1 == this.IndexOf(item)) { //进制添加重复对象 item.OwnerForm = this.owner; m_arrItem[this.count++] = item; this.owner.Invalidate(); //添加进去是 进行重绘 } }
/// <summary> /// 深拷贝 /// </summary> /// <returns>深度克隆的自定义系统按钮</returns> public CmSysButton Clone() { CmSysButton SysButton = new CmSysButton(); SysButton.Bounds = this.Bounds; SysButton.Location = this.Location; SysButton.size = this.Size; SysButton.ToolTip = this.ToolTip; ; SysButton.SysButtonNorml = this.SysButtonNorml; SysButton.SysButtonMouse = this.SysButtonMouse; SysButton.SysButtonDown = this.SysButtonDown; SysButton.OwnerForm = this.OwnerForm; SysButton.Name = this.Name; return SysButton; }
//确认存储空间 private void EnsureSpace(int elements) { if (m_arrItem == null) m_arrItem = new CmSysButton[Math.Max(elements, 4)]; else if (this.count + elements > m_arrItem.Length) { CmSysButton[] arrTemp = new CmSysButton[Math.Max(this.count + elements, m_arrItem.Length * 2)]; m_arrItem.CopyTo(arrTemp, 0); m_arrItem = arrTemp; } }
//画自定义系统按钮集合 private void RenderSkinFormCmSysBottomInternal(Graphics g, Rectangle rect, ControlBoxState state, bool active, CCSkinMain form, CmSysButton cmSysButton) { Bitmap btm = null; Color baseColor = ColorTable.ControlBoxActive; if (cmSysButton.BoxState == ControlBoxState.Pressed) { btm = (Bitmap)cmSysButton.SysButtonDown; baseColor = ColorTable.ControlBoxPressed; } else if (state == ControlBoxState.Hover) { btm = (Bitmap)cmSysButton.SysButtonMouse; baseColor = ColorTable.ControlBoxHover; } else { btm = (Bitmap)cmSysButton.SysButtonNorml; baseColor = active ? ColorTable.ControlBoxActive : ColorTable.ControlBoxDeactive; } //绘制图片样式 if (btm != null) { g.DrawImage(btm, rect); } else //绘制默认样式 { RoundStyle roundStyle = RoundStyle.BottomLeft; using (AntiAliasGraphics antiGraphics = new AntiAliasGraphics(g)) { RenderHelper.RenderBackgroundInternal( g, rect, baseColor, baseColor, ColorTable.ControlBoxInnerBorder, roundStyle, 6, .38F, true, false, LinearGradientMode.Vertical); using (Pen pen = new Pen(ColorTable.Border)) { g.DrawLine(pen, rect.X, rect.Y, rect.Right, rect.Y); } } } }