Changeset 4068 for trunk/sources/HeuristicLab.ExtLibs/HeuristicLab.WinFormsUI/2.3.1/WinFormsUI-2.3.1/Docking/InertButtonBase.cs
- Timestamp:
- 07/22/10 00:44:01 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.ExtLibs/HeuristicLab.WinFormsUI/2.3.1/WinFormsUI-2.3.1/Docking/InertButtonBase.cs
r2645 r4068 1 1 using System; 2 using System.Collections.Generic;3 using System.Text;4 using System.Windows.Forms;5 2 using System.Drawing; 6 3 using System.Drawing.Imaging; 4 using System.Windows.Forms; 7 5 8 namespace WeifenLuo.WinFormsUI.Docking 9 { 10 internal abstract class InertButtonBase : Control 11 { 12 protected InertButtonBase() 13 { 14 SetStyle(ControlStyles.SupportsTransparentBackColor, true); 15 BackColor = Color.Transparent; 6 namespace WeifenLuo.WinFormsUI.Docking { 7 internal abstract class InertButtonBase : Control { 8 protected InertButtonBase() { 9 SetStyle(ControlStyles.SupportsTransparentBackColor, true); 10 BackColor = Color.Transparent; 11 } 12 13 public abstract Bitmap Image { 14 get; 15 } 16 17 private bool m_isMouseOver = false; 18 protected bool IsMouseOver { 19 get { return m_isMouseOver; } 20 private set { 21 if (m_isMouseOver == value) 22 return; 23 24 m_isMouseOver = value; 25 Invalidate(); 26 } 27 } 28 29 protected override Size DefaultSize { 30 get { return Resources.DockPane_Close.Size; } 31 } 32 33 protected override void OnMouseMove(MouseEventArgs e) { 34 base.OnMouseMove(e); 35 bool over = ClientRectangle.Contains(e.X, e.Y); 36 if (IsMouseOver != over) 37 IsMouseOver = over; 38 } 39 40 protected override void OnMouseEnter(EventArgs e) { 41 base.OnMouseEnter(e); 42 if (!IsMouseOver) 43 IsMouseOver = true; 44 } 45 46 protected override void OnMouseLeave(EventArgs e) { 47 base.OnMouseLeave(e); 48 if (IsMouseOver) 49 IsMouseOver = false; 50 } 51 52 protected override void OnPaint(PaintEventArgs e) { 53 if (IsMouseOver && Enabled) { 54 using (Pen pen = new Pen(ForeColor)) { 55 e.Graphics.DrawRectangle(pen, Rectangle.Inflate(ClientRectangle, -1, -1)); 16 56 } 57 } 17 58 18 public abstract Bitmap Image 19 { 20 get; 21 } 59 using (ImageAttributes imageAttributes = new ImageAttributes()) { 60 ColorMap[] colorMap = new ColorMap[2]; 61 colorMap[0] = new ColorMap(); 62 colorMap[0].OldColor = Color.FromArgb(0, 0, 0); 63 colorMap[0].NewColor = ForeColor; 64 colorMap[1] = new ColorMap(); 65 colorMap[1].OldColor = Image.GetPixel(0, 0); 66 colorMap[1].NewColor = Color.Transparent; 22 67 23 private bool m_isMouseOver = false; 24 protected bool IsMouseOver 25 { 26 get { return m_isMouseOver; } 27 private set 28 { 29 if (m_isMouseOver == value) 30 return; 68 imageAttributes.SetRemapTable(colorMap); 31 69 32 m_isMouseOver = value; 33 Invalidate(); 34 } 35 } 70 e.Graphics.DrawImage( 71 Image, 72 new Rectangle(0, 0, Image.Width, Image.Height), 73 0, 0, 74 Image.Width, 75 Image.Height, 76 GraphicsUnit.Pixel, 77 imageAttributes); 78 } 36 79 37 protected override Size DefaultSize 38 { 39 get { return Resources.DockPane_Close.Size; } 40 } 80 base.OnPaint(e); 81 } 41 82 42 protected override void OnMouseMove(MouseEventArgs e) 43 { 44 base.OnMouseMove(e); 45 bool over = ClientRectangle.Contains(e.X, e.Y); 46 if (IsMouseOver != over) 47 IsMouseOver = over; 48 } 83 public void RefreshChanges() { 84 if (IsDisposed) 85 return; 49 86 50 protected override void OnMouseEnter(EventArgs e) 51 { 52 base.OnMouseEnter(e); 53 if (!IsMouseOver) 54 IsMouseOver = true; 55 } 87 bool mouseOver = ClientRectangle.Contains(PointToClient(Control.MousePosition)); 88 if (mouseOver != IsMouseOver) 89 IsMouseOver = mouseOver; 56 90 57 protected override void OnMouseLeave(EventArgs e) 58 { 59 base.OnMouseLeave(e); 60 if (IsMouseOver) 61 IsMouseOver = false; 62 } 91 OnRefreshChanges(); 92 } 63 93 64 protected override void OnPaint(PaintEventArgs e) 65 { 66 if (IsMouseOver && Enabled) 67 { 68 using (Pen pen = new Pen(ForeColor)) 69 { 70 e.Graphics.DrawRectangle(pen, Rectangle.Inflate(ClientRectangle, -1, -1)); 71 } 72 } 73 74 using (ImageAttributes imageAttributes = new ImageAttributes()) 75 { 76 ColorMap[] colorMap = new ColorMap[2]; 77 colorMap[0] = new ColorMap(); 78 colorMap[0].OldColor = Color.FromArgb(0, 0, 0); 79 colorMap[0].NewColor = ForeColor; 80 colorMap[1] = new ColorMap(); 81 colorMap[1].OldColor = Image.GetPixel(0, 0); 82 colorMap[1].NewColor = Color.Transparent; 83 84 imageAttributes.SetRemapTable(colorMap); 85 86 e.Graphics.DrawImage( 87 Image, 88 new Rectangle(0, 0, Image.Width, Image.Height), 89 0, 0, 90 Image.Width, 91 Image.Height, 92 GraphicsUnit.Pixel, 93 imageAttributes); 94 } 95 96 base.OnPaint(e); 97 } 98 99 public void RefreshChanges() 100 { 101 if (IsDisposed) 102 return; 103 104 bool mouseOver = ClientRectangle.Contains(PointToClient(Control.MousePosition)); 105 if (mouseOver != IsMouseOver) 106 IsMouseOver = mouseOver; 107 108 OnRefreshChanges(); 109 } 110 111 protected virtual void OnRefreshChanges() 112 { 113 } 94 protected virtual void OnRefreshChanges() { 114 95 } 96 } 115 97 }
Note: See TracChangeset
for help on using the changeset viewer.