123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229 |
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Diagnostics;
- using System.Text;
- using System.Drawing;
- using System.Windows.Forms;
- namespace LYFZ.ComponentLibrary
- {
-
- /// <summary>
- /// 透明按钮
- /// </summary>
- [ToolboxBitmap(typeof(TransparentControl))]
- public class TransparentControl :System.Windows.Forms.Control
- {
- private bool _transparentBG = true;
- private int _alpha = 30;
- private System.ComponentModel.Container components = new System.ComponentModel.Container();
- public TransparentControl()
- : this(30, true)
- {
-
- }
-
- public TransparentControl(int Alpha, bool showLoadingImage)
- {
- try
- {
- this.SetStyle(ControlStyles.DoubleBuffer, true);
- this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
- this.SetStyle(ControlStyles.UserPaint, true);
- this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);
- this.SetStyle(ControlStyles.StandardDoubleClick, false);
- this.SetStyle(ControlStyles.Selectable, true);
- this.SetStyle(System.Windows.Forms.ControlStyles.Opaque, true);
- ResizeRedraw = true;
- BackColor = Color.Transparent;
- ForeColor = Color.White;//初始文本颜色
- Font = new Font("微软雅黑", 9, System.Drawing.FontStyle.Bold);//控件字体
- base.CreateControl();
- this._alpha = Alpha;
- this.thisAlpha = _alpha;
- this.Width = 60;
- this.Height = 60;
- }
- catch { }
-
- //此处可以放置一个显示加载进度的图片
- //if (showLoadingImage)
- //{
- // PictureBox pictureBox_Loading = new PictureBox();
- // pictureBox_Loading.BackColor = System.Drawing.Color.White;
- // pictureBox_Loading.Image = global::MyOpaqueLayer.Properties.Resources.loading;//图片名称叫loading
- // pictureBox_Loading.Name = "pictureBox_Loading";
- // pictureBox_Loading.Size = new System.Drawing.Size(48, 48);
- // pictureBox_Loading.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
- // Point Location = new Point(this.Location.X + (this.Width - pictureBox_Loading.Width) / 2, this.Location.Y + (this.Height - pictureBox_Loading.Height) / 2);
- // pictureBox_Loading.Location = Location;
- // pictureBox_Loading.Anchor = AnchorStyles.None;
- // this.Controls.Add(pictureBox_Loading);
- //}
- }
- protected override void Dispose(bool disposing)
- {
- if (disposing)
- {
- if (!((components == null)))
- {
- components.Dispose();
- }
- }
- base.Dispose(disposing);
- }
- private int thisAlpha = 0;
- /// <summary>
- /// 按下
- /// </summary>
- /// <param name="e"></param>
- protected override void OnMouseDown(MouseEventArgs e)
- {
- base.OnMouseDown(e);
- this._alpha = 20;
- Invalidate(false);
- }
- protected override void OnGotFocus(EventArgs e)
- {
- base.OnGotFocus(e);
- this._alpha = 35;
- Invalidate(false);
- }
- /// <summary>
- /// 失去焦点后
- /// </summary>
- /// <param name="e"></param>
- protected override void OnLostFocus(EventArgs e)
- {
- base.OnLostFocus(e);
- this._alpha = thisAlpha;
- Invalidate(false);
- }
- /// <summary>
- /// 鼠标弹起后
- /// </summary>
- /// <param name="mevent"></param>
- protected override void OnMouseUp(MouseEventArgs mevent)
- {
- base.OnMouseUp(mevent);
- this._alpha = 35;
- Invalidate(false);
- }
- /// <summary>
- /// 鼠标移上控件
- /// </summary>
- /// <param name="e"></param>
- protected override void OnMouseEnter(EventArgs e)
- {
- base.OnMouseEnter(e);
- this._alpha = 35;
- Invalidate(false);
- }
- /// <summary>
- /// 鼠标离开控件
- /// </summary>
- /// <param name="e"></param>
- protected override void OnMouseLeave(EventArgs e)
- {
- base.OnMouseLeave(e);
- this._alpha = thisAlpha;
- Invalidate(false);
- }
- /// <summary>
- /// 自定义绘制窗体
- /// </summary>
- /// <param name="e"></param>
- protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
- {
-
-
-
- float vlblControlWidth;
- float vlblControlHeight;
- base.InvokePaintBackground(this, new PaintEventArgs(e.Graphics, base.ClientRectangle));
- Pen labelBorderPen;
- SolidBrush labelBackColorBrush;
- Color drawColor = Color.FromArgb(this._alpha, this.BackColor);
-
- if (_transparentBG)
- {
- labelBorderPen = new Pen(drawColor, 0);
- labelBackColorBrush = new SolidBrush(drawColor);
- }
- else
- {
- labelBorderPen = new Pen(this.BackColor, 0);
- labelBackColorBrush = new SolidBrush(this.BackColor);
- }
- // base.OnPaint(e);
- vlblControlWidth = this.Size.Width;
- vlblControlHeight = this.Size.Height;
- Rectangle rele= new Rectangle(0, 0, this.Size.Width, this.Size.Height);
-
-
-
- e.Graphics.DrawRectangle(labelBorderPen, 0, 0, vlblControlWidth, vlblControlHeight);
- e.Graphics.FillRectangle(labelBackColorBrush, 0, 0, vlblControlWidth, vlblControlHeight);
-
-
- }
- /// <summary>
- ///
- /// </summary>
- protected override CreateParams CreateParams//v1.10
- {
- get
- {
- CreateParams cp = base.CreateParams;
- cp.ExStyle |= 0x20; // 开启 WS_EX_TRANSPARENT,使控件支持透明
- return cp;
- }
- }
- [Category("TransparentControl"), Description("是否使用透明,默认为True")]
- public bool TransparentBG
- {
- get { return _transparentBG; }
- set
- {
- _transparentBG = value;
- this.Invalidate();
- }
- }
- [Category("TransparentControl"), Description("设置透明度")]
- public int Alpha
- {
- get { return _alpha; }
- set
- {
- if (value <= 255 && value>=0)
- {
- _alpha = value;
- thisAlpha = _alpha;
- }
- this.Invalidate();
- }
- }
- }
- }
|