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

    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

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

    分类: winform资料

  • 相关阅读:
    如何降低微服务测试成本?我的经验之谈
    Serverless 在 SaaS 领域的最佳实践
    技术干货 | “选图预览并上传”的场景如何解?全网最全方案汇总来了
    SRE技术保障平台-盯屏中心TAC: 混合云一站式告警运维平台
    DTCC 2020 | 阿里云王涛:阿里巴巴电商数据库上云实践
    中值滤波算法 C
    python logger.debug_python中的logger模块讲解
    唯一值
    接触jeecgBoot低代码开发
    php数字操作
  • 原文地址:https://www.cnblogs.com/grj001/p/12224105.html
Copyright © 2011-2022 走看看