1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > C#实现winform仿div+css半透明遮罩效果

C#实现winform仿div+css半透明遮罩效果

时间:2023-07-09 19:00:06

相关推荐

C#实现winform仿div+css半透明遮罩效果

本文实现在winform项目实现网页div+css关透明效果,挺帅的,在网页中要实现div的半透明遮罩层效果不难,在winform项目就不是这么容易了,下面我们来看下效果图先: 正常时:

文章来自学IT网:/html/-01-08/21-1076980691437.html

下面我们来实现上图的效果控件源码:

using System;using System.Collections.Generic;using System.Text;using System.Drawing;using System.Windows.Forms;using ponentModel;namespace MyOpaqueLayer{[ToolboxBitmap(typeof(MyOpaqueLayer))]public class MyOpaqueLayer : System.Windows.Forms.Control{private bool _transparentBG = true;private int _alpha = 125;private ponentModel.Container components = new ponentModel.Container();public MyOpaqueLayer(): this(125, true){}public MyOpaqueLayer(int Alpha, bool showLoadingImage){SetStyle(System.Windows.Forms.ControlStyles.Opaque, true);base.CreateControl();this._alpha = Alpha;;if (showLoadingImage){PictureBox pictureBox_Loading = new PictureBox();pictureBox_Loading.BackColor = System.Drawing.Color.White;pictureBox_Loading.Image = global::MyOpaqueLayer.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);}/// <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);}/// <summary>/// /// </summary>protected override CreateParams CreateParams//v1.10 {get{CreateParams cp = base.CreateParams;cp.ExStyle |= 0x20; // 开启 WS_EX_TRANSPARENT,使控件支持透明return cp;}}[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();}}}}文章来自学IT网:/html/-01-08/21-1076980691437.html

下载:/xiaofengfeng/MyOpaqueLayer1.rar

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。