big transformation , using DockPanels now
it feels good to me! -Thoys git-svn-id: https://lsleditor.svn.sourceforge.net/svnroot/lsleditor@26 3f4676ac-adda-40fd-8265-58d1435b1672
This commit is contained in:
parent
75c722f354
commit
573823c181
92 changed files with 16899 additions and 760 deletions
115
trunk/Docking/InertButtonBase.cs
Normal file
115
trunk/Docking/InertButtonBase.cs
Normal file
|
@ -0,0 +1,115 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Imaging;
|
||||
|
||||
namespace LSLEditor.Docking
|
||||
{
|
||||
internal abstract class InertButtonBase : Control
|
||||
{
|
||||
protected InertButtonBase()
|
||||
{
|
||||
SetStyle(ControlStyles.SupportsTransparentBackColor, true);
|
||||
BackColor = Color.Transparent;
|
||||
}
|
||||
|
||||
public abstract Bitmap Image
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
private bool m_isMouseOver = false;
|
||||
protected bool IsMouseOver
|
||||
{
|
||||
get { return m_isMouseOver; }
|
||||
private set
|
||||
{
|
||||
if (m_isMouseOver == value)
|
||||
return;
|
||||
|
||||
m_isMouseOver = value;
|
||||
Invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
protected override Size DefaultSize
|
||||
{
|
||||
get { return Resources.DockPane_Close.Size; }
|
||||
}
|
||||
|
||||
protected override void OnMouseMove(MouseEventArgs e)
|
||||
{
|
||||
base.OnMouseMove(e);
|
||||
bool over = ClientRectangle.Contains(e.X, e.Y);
|
||||
if (IsMouseOver != over)
|
||||
IsMouseOver = over;
|
||||
}
|
||||
|
||||
protected override void OnMouseEnter(EventArgs e)
|
||||
{
|
||||
base.OnMouseEnter(e);
|
||||
if (!IsMouseOver)
|
||||
IsMouseOver = true;
|
||||
}
|
||||
|
||||
protected override void OnMouseLeave(EventArgs e)
|
||||
{
|
||||
base.OnMouseLeave(e);
|
||||
if (IsMouseOver)
|
||||
IsMouseOver = false;
|
||||
}
|
||||
|
||||
protected override void OnPaint(PaintEventArgs e)
|
||||
{
|
||||
if (IsMouseOver && Enabled)
|
||||
{
|
||||
using (Pen pen = new Pen(ForeColor))
|
||||
{
|
||||
e.Graphics.DrawRectangle(pen, Rectangle.Inflate(ClientRectangle, -1, -1));
|
||||
}
|
||||
}
|
||||
|
||||
using (ImageAttributes imageAttributes = new ImageAttributes())
|
||||
{
|
||||
ColorMap[] colorMap = new ColorMap[2];
|
||||
colorMap[0] = new ColorMap();
|
||||
colorMap[0].OldColor = Color.FromArgb(0, 0, 0);
|
||||
colorMap[0].NewColor = ForeColor;
|
||||
colorMap[1] = new ColorMap();
|
||||
colorMap[1].OldColor = Image.GetPixel(0, 0);
|
||||
colorMap[1].NewColor = Color.Transparent;
|
||||
|
||||
imageAttributes.SetRemapTable(colorMap);
|
||||
|
||||
e.Graphics.DrawImage(
|
||||
Image,
|
||||
new Rectangle(0, 0, Image.Width, Image.Height),
|
||||
0, 0,
|
||||
Image.Width,
|
||||
Image.Height,
|
||||
GraphicsUnit.Pixel,
|
||||
imageAttributes);
|
||||
}
|
||||
|
||||
base.OnPaint(e);
|
||||
}
|
||||
|
||||
public void RefreshChanges()
|
||||
{
|
||||
if (IsDisposed)
|
||||
return;
|
||||
|
||||
bool mouseOver = ClientRectangle.Contains(PointToClient(Control.MousePosition));
|
||||
if (mouseOver != IsMouseOver)
|
||||
IsMouseOver = mouseOver;
|
||||
|
||||
OnRefreshChanges();
|
||||
}
|
||||
|
||||
protected virtual void OnRefreshChanges()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue