栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使控件透明

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使控件透明

这是我的特殊控件,其中包含一个不透明度属性,它100%有效:

using System;using System.Collections;using System.ComponentModel;using System.ComponentModel.Design;using System.Drawing;using System.Windows.Forms;using System.Windows.Forms.Design;public class TranspCtrl : Control{    public bool drag = false;    public bool enab = false;    private int m_opacity = 100;    private int alpha;    public TranspCtrl()    {        SetStyle(ControlStyles.SupportsTransparentBackColor, true);        SetStyle(ControlStyles.Opaque, true);        this.BackColor = Color.Transparent;    }    public int Opacity    {        get        { if (m_opacity > 100) {     m_opacity = 100; } else if (m_opacity < 1) {     m_opacity = 1; } return this.m_opacity;        }        set        { this.m_opacity = value; if (this.Parent != null) {     Parent.Invalidate(this.Bounds, true); }        }    }    protected override CreateParams CreateParams    {        get        { CreateParams cp = base.CreateParams; cp.ExStyle = cp.ExStyle | 0x20; return cp;        }    }    protected override void onPaint(PaintEventArgs e)    {        Graphics g = e.Graphics;        Rectangle bounds = new Rectangle(0, 0, this.Width - 1, this.Height - 1);        Color frmColor = this.Parent.BackColor;        Brush bckColor = default(Brush);        alpha = (m_opacity * 255) / 100;        if (drag)        { Color dragBckColor = default(Color); if (BackColor != Color.Transparent) {     int Rb = BackColor.R * alpha / 255 + frmColor.R * (255 - alpha) / 255;     int Gb = BackColor.G * alpha / 255 + frmColor.G * (255 - alpha) / 255;     int Bb = BackColor.B * alpha / 255 + frmColor.B * (255 - alpha) / 255;     dragBckColor = Color.FromArgb(Rb, Gb, Bb); } else {     dragBckColor = frmColor; } alpha = 255; bckColor = new SolidBrush(Color.FromArgb(alpha, dragBckColor));        }        else        { bckColor = new SolidBrush(Color.FromArgb(alpha, this.BackColor));        }        if (this.BackColor != Color.Transparent | drag)        { g.FillRectangle(bckColor, bounds);        }        bckColor.Dispose();        g.Dispose();        base.onPaint(e);    }    protected override void onBackColorChanged(EventArgs e)    {        if (this.Parent != null)        { Parent.Invalidate(this.Bounds, true);        }        base.onBackColorChanged(e);    }    protected override void onParentBackColorChanged(EventArgs e)    {        this.Invalidate();        base.onParentBackColorChanged(e);    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/442750.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号