zoukankan      html  css  js  c++  java
  • c# 可以设置透明度的 Panel 组件

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Drawing;
    using System.Drawing.Drawing2D;
    using System.Text;
    using System.Windows.Forms;
    
    namespace TransparentPanelTest
    {
        public class TransparentPanel : Control
        {
            private Color _borderColor;
            private int _borderWidth = 1;
            private DashStyle _borderStyle = DashStyle.Solid;
            private int _opacity = 125;
    
            public TransparentPanel()
            {
                
            }
    
            #region Property
            [Category("Custom"), Description("Border Color")]
            public Color BorderColor
            {
                set { _borderColor = value; }
                get { return _borderColor; }
            }
    
            [Category("Custom"), Description("Border Width"), DefaultValue(1)]
            public int BorderWidth
            {
                set
                {
                    if (value < 0) value = 0;
                    _borderWidth = value;
                }
                get { return _borderWidth; }
            }
    
            [Category("Custom"), Description("Border Style"), DefaultValue(DashStyle.Solid)]
            public DashStyle BorderStyle
            {
                set { this._borderStyle = value; this.Invalidate(); }
                get { return this._borderStyle; }
            }
    
            [Bindable(true), Category("Custom"), DefaultValue(125), Description("背景的透明度. 有效值0-255")]
            public int Opacity
            {
                get { return _opacity; }
                set
                {
                    if (value > 255) value = 255;
                    else if (value < 0) value = 0;
                    _opacity = value;
                    this.Invalidate();
                }
            }
            #endregion
    
            protected override void OnPaintBackground(PaintEventArgs e)
            {
                //do not allow the background to be painted 
            }
    
            protected override CreateParams CreateParams
            {
                get
                {
                    CreateParams cp = base.CreateParams;
                    cp.ExStyle |= 0x00000020; //WS_EX_TRANSPARENT
                    return cp;
                }
            }
    
            protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
            {
                if (this._opacity > 0)
                {
                    e.Graphics.FillRectangle(new SolidBrush(Color.FromArgb(this._opacity, this.BackColor)),
                                             this.ClientRectangle);
                }
                if (this._borderWidth > 0)
                {
                    Pen pen = new Pen(this._borderColor, this._borderWidth);
                    pen.DashStyle = this._borderStyle;
                    e.Graphics.DrawRectangle(pen, e.ClipRectangle.Left, e.ClipRectangle.Top, this.Width - 1, this.Height - 1);
                    pen.Dispose();
                }
            }
    
        }
    }
    
  • 相关阅读:
    asp.net mvc本地程序集和GAC的程序集冲突解决方法
    SolrCloud-如何在.NET程序中使用
    Application Initialization Module for IIS 7.5
    CentOS 6.5/6.6 安装mysql 5.7 最完整版教程
    NHibernate one-to-one
    “Invalid maximum heap size” when running Maven
    初涉RxAndroid结合Glide实现多图片载入操作
    【案例分析】Linux下怎样查看port占用情况
    js学习之--Bootstrap Modals(模态框)
    sdut2852 小鑫去爬山9dp入门)
  • 原文地址:https://www.cnblogs.com/chengulv/p/3495284.html
Copyright © 2011-2022 走看看