• c# 可以设置透明度的 Panel 组件


    c# 可以设置透明度的 Panel 组件

    Posted on 2013-12-28 13:47 快乐家++ 阅读(7419) 评论(2) 编辑 收藏

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

    51

    52

    53

    54

    55

    56

    57

    58

    59

    60

    61

    62

    63

    64

    65

    66

    67

    68

    69

    70

    71

    72

    73

    74

    75

    76

    77

    78

    79

    80

    81

    82

    83

    84

    85

    86

    87

    88

    89

    90

    91

    92

    93

    94

    95

    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();

                }

            }

        }

    }

  • 相关阅读:
    二逼平衡树(树套树)
    NOI2010 超级钢琴
    SDOI2011 消耗战
    HNOI2013 游走
    [SDOI2010]外星千足虫
    [UVA 11374]Airport Express
    [Luogu P1354]房间最短路问题
    [Luogu P2296][NOIP 2014]寻找道路
    高精度算法
    洛谷红名+AC150祭
  • 原文地址:https://www.cnblogs.com/grj001/p/12224102.html
Copyright © 2020-2023  润新知