C#實現winform仿div+css半透明遮罩效果

來源:互聯網
上載者:User

本文實現在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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.