日期:2014-05-17  浏览次数:20891 次

C# WINFORM 控件 透明控件
本帖最后由 bai123love 于 2012-11-01 21:47:50 编辑
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing;
using System.Drawing.Drawing2D;

namespace WindowsFormsApplication1
{
    public class ControlExample : Control
    {
        private const int Alpha = 111;

        public ControlExample()
        {
            this.SetStyle(System.Windows.Forms.ControlStyles.Opaque, true);

            base.CreateControl();
        }

        protected override CreateParams CreateParams
        {
            get
            {
                CreateParams cp = base.CreateParams;
                //开启 WS_EX_TRANSPARENT, 使控件支持透明
                cp.ExStyle |= 0x00000020;
                return cp;
            }
        }

        protected override void OnPaint(PaintEventArgs e)
        {
            float width;
            float height;

            Pen srcPen;
            SolidBrush srcBrush;

            Color srcColor = Color.FromArgb(Alpha, this.BackColor);

            srcPen = new Pen(srcColor, 0);

            srcBrush = new SolidBrush(srcColor);

            base.OnPaint(e);

            width = this.Size.Width;

            height = this.Size.Height;

            e.Graphics.DrawRectangle(srcPen, 0, 0, width, height);
            e.Graphics.FillRectangle(srcBrush, 0, 0, width, height);

            e.Graphics.DrawString(this.Text, this.Font, new SolidBrush(Color.Black), new Rectan