| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- /*******************************************************************************
- * Copyright(c) 2014 DongkeSoft All rights reserved. / Confidential
- * 类的信息:
- * 1.程序名称:InertButtonBase.cs
- * 2.功能描述:类文件
- * 编辑履历:
- * 作者 日期 版本 修改内容
- * 陈晓野 2014/09/01 1.00 新建
- *******************************************************************************/
- using System;
- using System.Drawing;
- using System.Drawing.Imaging;
- using System.Windows.Forms;
- namespace Dongke.IBOSS.PRD.Basics.DockPanel
- {
- 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()
- {
- }
- }
- }
|