123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223 |
- using LYFZ.OtherExpansion.SkinClass;
- using System;
- using System.ComponentModel;
- using System.Drawing;
- using System.Windows.Forms;
- namespace LYFZ.OtherExpansion.SkinControl
- {
- [ToolboxBitmap(typeof(Panel))]
- public class SkinPanel : Panel
- {
- private ControlState _controlState;
- private bool palace;
- private Rectangle backrectangle = new Rectangle(10, 10, 10, 10);
- private Image mouseback;
- private Image downback;
- private Image normlback;
- private int radius;
- private IContainer components;
- public ControlState ControlState
- {
- get
- {
- return this._controlState;
- }
- set
- {
- if (this._controlState != value)
- {
- this._controlState = value;
- base.Invalidate();
- }
- }
- }
- [Category("Skin"), DefaultValue(typeof(bool), "false"), Description("是否开启九宫绘图")]
- public bool Palace
- {
- get
- {
- return this.palace;
- }
- set
- {
- if (this.palace != value)
- {
- this.palace = value;
- base.Invalidate();
- }
- }
- }
- [Category("Skin"), DefaultValue(typeof(Rectangle), "10,10,10,10"), Description("九宫绘画区域")]
- public Rectangle BackRectangle
- {
- get
- {
- return this.backrectangle;
- }
- set
- {
- if (this.backrectangle != value)
- {
- this.backrectangle = value;
- }
- base.Invalidate();
- }
- }
- [Category("MouseEnter"), Description("悬浮时背景")]
- public Image MouseBack
- {
- get
- {
- return this.mouseback;
- }
- set
- {
- if (this.mouseback != value)
- {
- this.mouseback = value;
- base.Invalidate();
- }
- }
- }
- [Category("MouseDown"), Description("点击时背景")]
- public Image DownBack
- {
- get
- {
- return this.downback;
- }
- set
- {
- if (this.downback != value)
- {
- this.downback = value;
- base.Invalidate();
- }
- }
- }
- [Category("MouseNorml"), Description("初始时背景")]
- public Image NormlBack
- {
- get
- {
- return this.normlback;
- }
- set
- {
- if (this.normlback != value)
- {
- this.normlback = value;
- base.Invalidate();
- }
- }
- }
- [Category("Skin"), DefaultValue(typeof(int), "0"), Description("圆角大小")]
- public int Radius
- {
- get
- {
- return this.radius;
- }
- set
- {
- if (this.radius != value)
- {
- this.radius = ((value < 0) ? 0 : value);
- base.Invalidate();
- }
- }
- }
- public SkinPanel()
- {
- this.Init();
- base.ResizeRedraw = true;
- this.BackColor = Color.Transparent;
-
- }
- public void Init()
- {
- base.SetStyle(ControlStyles.ResizeRedraw, true);
- base.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
- base.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
- base.SetStyle(ControlStyles.UserPaint, true);
- base.SetStyle(ControlStyles.SupportsTransparentBackColor, true);
- base.UpdateStyles();
- }
-
- protected override void OnMouseEnter(EventArgs e)
- {
- this._controlState = ControlState.Hover;
- base.Invalidate();
- base.OnMouseEnter(e);
- }
- protected override void OnMouseLeave(EventArgs e)
- {
- this._controlState = ControlState.Normal;
- base.Invalidate();
- base.OnMouseLeave(e);
- }
- protected override void OnMouseDown(MouseEventArgs e)
- {
- if (e.Button == MouseButtons.Left)
- {
- this._controlState = ControlState.Pressed;
- base.Invalidate();
- }
- base.OnMouseDown(e);
- }
- protected override void OnMouseUp(MouseEventArgs e)
- {
- this._controlState = ControlState.Hover;
- base.Invalidate();
- base.OnMouseUp(e);
- }
- protected override void OnPaint(PaintEventArgs e)
- {
-
- Graphics g = e.Graphics;
- Bitmap btm;
- switch (this._controlState)
- {
- case ControlState.Hover:
- btm = (Bitmap)this.MouseBack;
- break;
- case ControlState.Pressed:
- btm = (Bitmap)this.DownBack;
- break;
- default:
- btm = (Bitmap)this.NormlBack;
- break;
- }
- if (btm != null)
- {
- if (this.Palace)
- {
- LYFZ.OtherExpansion.SkinClass.ImageDrawRect.DrawRect(g, btm, new Rectangle(base.ClientRectangle.X, base.ClientRectangle.Y, base.ClientRectangle.Width, base.ClientRectangle.Height), Rectangle.FromLTRB(this.BackRectangle.X, this.BackRectangle.Y, this.BackRectangle.Width, this.BackRectangle.Height), 1, 1);
- }
- else
- {
- this.BackgroundImage = btm;
- }
- }
-
- UpdateForm.CreateRegion(this, this.radius);
-
- base.OnPaint(e);
-
- }
- protected override void Dispose(bool disposing)
- {
- if (disposing && this.components != null)
- {
- this.components.Dispose();
- }
- base.Dispose(disposing);
- }
- private void InitializeComponent()
- {
- this.components = new Container();
- }
- }
- }
|