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

  • 相关阅读:
    Java实现 蓝桥杯VIP 算法提高 排队打水问题
    Java实现 蓝桥杯VIP 算法提高 排队打水问题
    Java实现 蓝桥杯VIP 算法提高 排队打水问题
    Java实现 蓝桥杯VIP 算法提高 特殊的质数肋骨
    Java实现 蓝桥杯VIP 算法提高 特殊的质数肋骨
    Java实现 蓝桥杯VIP 算法提高 特殊的质数肋骨
    Java实现 蓝桥杯VIP 算法提高 特殊的质数肋骨
    现在使用控件, 更喜欢继承(覆盖控件已有的函数,很奇怪的一种使用方式)
    Controls 属性与继承 TShape 类的小练习(使用TShape可以解决很多图形问题)
    QT创建窗口程序、消息循环和WinMain函数(为主线程建立了一个QEventLoop,并执行exec函数)
  • 原文地址:https://www.cnblogs.com/grj001/p/12224106.html
Copyright © 2011-2022 走看看