c# 可以设置透明度的 Panel 组件
2013-12-28 13:47
253 查看
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(); } } } }
相关文章推荐
- [重点是调透明度]Panel设置透明属性 C#中颜色的使用
- C#+ArcEngine:设置矢量图层的透明度
- C#代码设置窗体和Panel的位置大小
- Flex中设置面板容器(Panel container)背景透明度的例子
- Android写的一个设置图片查看器,可以调整透明度
- android设置组件透明度
- 设置JLabel或其他组件透明度
- C#给图片加水印标记,可设置透明度
- 如何设置Flex中面板容器(Panel container)边框透明度的例子
- flex4 panel去掉标题设置透明度效果代码
- C#.NET通用权限管理系统组件中数据集权限设置功能增加内部组织机构选项功能
- 设置完颜色后可以再设置透明度
- 【商业版】C# ASP.NET 通用权限管理系统组件源码中的数据库访问组件可以全面支持Access单机数据库了
- IIS设置ISAPI筛选器Rewrite组件防盗链(防盗链可以节省流量,提高性能)
- C#对Excel的操作(可以做报表导出的组件)
- panel,button的用法--flex--宽/高-application也可以设置w/h
- ExtJs6 formpanel tagfield组件设置默认值(formpanel展现时tagfield组件列部分数据被选中)
- c# 遍历页面所有控件,设置panel隐藏
- C#给图片加水印,可设置透明度
- c#实现打印功能,可以设置纸张大小,字体和颜色等