• 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资料

  • 相关阅读:
    Vue2.0 $set()的正确使用方式
    Vue中axios踩坑之路-POST传参
    vue里使用create、mounted调用方法的正确姿势
    cmd返回上一级和根目录
    【积累】排序题积累
    【图论】2019 ICPC Malaysia National G(拓扑排序)
    2019 ICPC Malaysia National F(状态压缩)
    【线段树】扫描线学习笔记
    组合数(阶乘数质因子分解)
    【线段树】2019CCPC网络选拔赛 array(权值线段树)
  • 原文地址:https://www.cnblogs.com/grj001/p/12224106.html
Copyright © 2020-2023  润新知