|
- using System;
- using System.Drawing;
- using System.Windows.Forms;
- using System.ComponentModel;
- using HKCardManager.UserPages;
-
- namespace HKCardManager
- {
- /// <summary>
- /// 自定义控件:半透明控件
- /// </summary>
- /*
- * [ToolboxBitmap(typeof(MyOpaqueLayer))]
- * 用于指定当把你做好的自定义控件添加到工具栏时,工具栏显示的图标。
- * 正确写法应该是
- * [ToolboxBitmap(typeof(XXXXControl),"xxx.bmp")]
- * 其中XXXXControl是你的自定义控件,"xxx.bmp"是你要用的图标名称。
- */
- [ToolboxBitmap(typeof(MyOpaqueLayer))]
- public class MyOpaqueLayer : System.Windows.Forms.Control
- {
- private bool _transparentBG = true;//是否使用透明
- private int _alpha = 125;//设置透明度
-
- private System.ComponentModel.Container components = new System.ComponentModel.Container();
-
- public MyOpaqueLayer()
- : this(125, true)
- {
- }
-
- public MyOpaqueLayer(int Alpha, bool IsShowLoadingImage)
- {
- SetStyle(System.Windows.Forms.ControlStyles.Opaque, true);
- base.CreateControl();
-
- this._alpha = Alpha;
- if (IsShowLoadingImage)
- {
- PictureBox pictureBox_Loading = new PictureBox();
- pictureBox_Loading.BackColor = System.Drawing.Color.White;
- pictureBox_Loading.Image = global::HKCardManager.Properties.Resources.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 SolidBrush fontBrush = new SolidBrush(Color.FromArgb(206, 94, 94, 94));
- /// <summary>
- /// 自定义绘制窗体
- /// </summary>
- /// <param name="e"></param>
- protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
- {
- float vlblControlWidth;
- float vlblControlHeight;
-
- Pen labelBorderPen;
- SolidBrush labelBackColorBrush;
-
- if (_transparentBG)
- {
- Color drawColor = Color.FromArgb(this._alpha, this.BackColor);
- 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;
- e.Graphics.DrawRectangle(labelBorderPen, 0, 0, vlblControlWidth, vlblControlHeight);
- e.Graphics.FillRectangle(labelBackColorBrush, 0, 0, vlblControlWidth, vlblControlHeight);
- e.Graphics.DrawString("Excel人员批量导入中...\n请勿操作制卡终端!!!", new Font("黑体", 20, FontStyle.Bold), fontBrush, vlblControlWidth / 2 - 120, vlblControlHeight / 2 + 40);
- }
-
-
- protected override CreateParams CreateParams//v1.10
- {
- get
- {
- CreateParams cp = base.CreateParams;
- cp.ExStyle |= 0x00000020; //0x20; // 开启 WS_EX_TRANSPARENT,使控件支持透明
- return cp;
- }
- }
-
- /*
- * [Category("myOpaqueLayer"), Description("是否使用透明,默认为True")]
- * 一般用于说明你自定义控件的属性(Property)。
- * Category用于说明该属性属于哪个分类,Description自然就是该属性的含义解释。
- */
- [Category("MyOpaqueLayer"), Description("是否使用透明,默认为True")]
- public bool TransparentBG
- {
- get
- {
- return _transparentBG;
- }
- set
- {
- _transparentBG = value;
- this.Invalidate();
- }
- }
-
- [Category("MyOpaqueLayer"), Description("设置透明度")]
- public int Alpha
- {
- get
- {
- return _alpha;
- }
- set
- {
- _alpha = value;
- this.Invalidate();
- }
- }
- }
-
-
- }
|