zoukankan      html  css  js  c++  java
  • C#实现winform仿div+css半透明遮罩效果

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

    文章来自学IT网:http://www.xueit.com/html/2010-01-08/21-1076980691437.html

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

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Drawing;
    using System.Windows.Forms;
    using System.ComponentModel;
    
    namespace MyOpaqueLayer
    {
    
        [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 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网:http://www.xueit.com/html/2010-01-08/21-1076980691437.html
    

      下载:https://files.cnblogs.com/xiaofengfeng/MyOpaqueLayer1.rar

  • 相关阅读:
    ThinkPHP 中 where条件 or,and 同时使用
    mysql客户端 navicat 本地导入sql文件出错
    mysql查询出所有重复的记录
    JS返回上一页并刷新
    Jquery计算指定日期加上多少天、加多少月、加多少年的日期
    JS获取当前完整的url地址以及参数的方法
    PHP 计算两个时间戳之间相差的时间
    mysql左连接右连接(查询两张表不同的数据)
    C++中的C
    C++编程思想
  • 原文地址:https://www.cnblogs.com/xiaofengfeng/p/2334404.html
Copyright © 2011-2022 走看看