C#图片半透明效果
2013-10-02 19:09
302 查看
目前有个任务,需要实现图片颜色半透明,效果如下图:
测试了一下,使用方法为在上面自定义一个控件,在控件上用指定颜色绘制一个矩形,并指定其为半透明(alpha方式)。
定义控件
定义控件如下内容:
public MyOpaqueLayer()//构建函数 含有参数的初始化,主要是alpha值、遮罩颜色等。
典型的构建函数为:
protected override void OnPaint(System.Windows.Forms.PaintEventArgs e) /// 自定义绘制窗体 绘制矩形并叠加
典型的绘制函数为
protected override CreateParams CreateParams //在msdn中注明重定义的内容,主要是设定控件风格,使其支持透明
典型代码为:
两个设置项目:
使用
使用在需要蒙色的地方加上这几句(其中_alpha请替换成你需要的透明度,colorDialog1.Color请替换成你希望的颜色)
注意如下事项:
开启 WS_EX_TRANSPARENT,使控件支持透明
在更新参数(包含遮罩颜色和alpha透明度)之后要刷新控件,刷新时注意,你的自定义控件添加到谁那里就刷新谁。如果你做的半透明是一个picture而刷新form,结果就是没反应,需要把窗口切到后台再切回来才回变化。
本功能做法参考文章《C#实现Winform自定义半透明遮罩层介绍》
源码示例请参考这个:http://download.csdn.net/detail/sanredfish/6349195
测试了一下,使用方法为在上面自定义一个控件,在控件上用指定颜色绘制一个矩形,并指定其为半透明(alpha方式)。
定义控件
定义控件如下内容:
public MyOpaqueLayer()//构建函数 含有参数的初始化,主要是alpha值、遮罩颜色等。
典型的构建函数为:
public MyOpaqueLayer(int Alpha, bool IsShowLoadingImage) { SetStyle(System.Windows.Forms.ControlStyles.Opaque, true); base.CreateControl(); this._alpha = Alpha; _new_brush_color = new Color(); _new_brush_color = Color.Transparent; }
protected override void OnPaint(System.Windows.Forms.PaintEventArgs e) /// 自定义绘制窗体 绘制矩形并叠加
典型的绘制函数为
/// <summary> /// 自定义绘制窗体 /// </summary> /// <param name="e"></param> protected override void OnPaint(System.Windows.Forms.PaintEventArgs e) { float vlblControlWidth; float vlblControlHeight; Pen labelBorderPen; SolidBrush labelBackColorBrush; //透明处理笔刷 Color drawColor = Color.FromArgb(this._alpha, _new_brush_color); labelBorderPen = new Pen(drawColor, 0); labelBackColorBrush = new SolidBrush(drawColor); base.OnPaint(e); vlblControlWidth = this.Size.Width; vlblControlHeight = this.Size.Height; e.Graphics.DrawRectangle(labelBorderPen, 0, 0, vlblControlWidth, vlblControlHeight); e.Graphics.FillRectangle(labelBackColorBrush, 0, 0, vlblControlWidth, vlblControlHeight); }
protected override CreateParams CreateParams //在msdn中注明重定义的内容,主要是设定控件风格,使其支持透明
典型代码为:
protected override CreateParams CreateParams//v1.10 { get { CreateParams cp = base.CreateParams; cp.ExStyle |= 0x00000020; //0x20; // 开启 WS_EX_TRANSPARENT,使控件支持透明 return cp; } }
两个设置项目:
private int _alpha = 125;//设置透明度 public Color _new_brush_color; [Category("MyOpaqueLayer"), Description("设置透明度")] public int Alpha { get { return _alpha; } set { _alpha = value; this.Invalidate(); } } [Category("MyOpaqueLayer"), Description("设置蒙层颜色")] public Color new_brush_color { get { return _new_brush_color; } set { _new_brush_color = value; this.Invalidate(); } }
使用
使用在需要蒙色的地方加上这几句(其中_alpha请替换成你需要的透明度,colorDialog1.Color请替换成你希望的颜色)
this.m_OpaqueLayer = new MyOpaqueLayer.MyOpaqueLayer(_alpha, false); m_OpaqueLayer.Alpha = _alpha; m_OpaqueLayer.new_brush_color = colorDialog1.Color; pictureBox1.Controls.Add(this.m_OpaqueLayer); this.m_OpaqueLayer.Dock = DockStyle.Fill;
注意如下事项:
开启 WS_EX_TRANSPARENT,使控件支持透明
在更新参数(包含遮罩颜色和alpha透明度)之后要刷新控件,刷新时注意,你的自定义控件添加到谁那里就刷新谁。如果你做的半透明是一个picture而刷新form,结果就是没反应,需要把窗口切到后台再切回来才回变化。
本功能做法参考文章《C#实现Winform自定义半透明遮罩层介绍》
源码示例请参考这个:http://download.csdn.net/detail/sanredfish/6349195
相关文章推荐
- 为Symbian程序中的图片增加半透明效果
- div+css布局控制div定位浮动层在背景图片上的半透明阴影效果
- 设置图片渐变效果,遮罩层、半透明
- CSS opacity - 实现图片半透明效果
- 为Symbian程序中的图片增加半透明效果
- 模拟 手机QQ 点击头部图片 使其变成半透明 使用一张图片实现此效果
- 图片与文字半透明效果 鼠标移上不透明
- 非常漂亮的图片展示效果,倒影,可以用用鼠标中键滚动,半透明的效果,也很方便改为动态的,带图
- GDI_图片半透明效果示例
- 看截图:给图片罩上一层半透明文字描述效果(二)DIV+CSS+SPAN
- 非常漂亮的图片展示效果,倒影,可以用用鼠标中键滚动,半透明的效果,也很方便改为动态的,带图
- 为Symbian程序中的图片增加半透明效果
- 为Symbian程序中的图片增加半透明效果
- css实现图片半透明效果
- CSS opacity - 实现图片半透明效果的代码
- 图片半透明效果
- CSS opacity - 实现图片半透明效果的代码
- CSS opacity - 实现图片半透明效果
- 看截图:给图片罩上一层半透明文字描述效果(一)DIV+CSS+SPAN 借鉴百度图片附着文字效果
- 为Symbian程序中的图片增加半透明效果