原文:浅谈WPF中对控件的位图特效(WPF Bitmap Effects)

--------------------------------------------------------------------------------
引用或转载时请保留以下信息:
大可山 [MSN:a3news(AT)hotmail.com]
http://www.zpxp.com http://www.brawdraw.com
萝卜鼠在线图形图像处理
--------------------------------------------------------------------------------

在WPF中,使用BitmapEffect对所有Visual对象进行位图特效处理(比如文本,按钮,图像,甚至矩形、画布等),它是基于像素级别的,而且是基于软件处理模式而非硬件加速的处理模式
BitmapEffect在控件渲染时起作用,当控件渲染时,该Visual对象转化成相应的BitmapSource并作为BitmapEffect的输入,显示为经过BitmapEffect处理后的效果。
我们可以对控件进行以下几种常见的位图特效处理:
(1)虚化效果(BlurBitmapEffect)
(2)外辉光效果(OuterGlowBitmapEffect)
(3)阴影效果(DropShadowBitmapEffect)
(4)斜面特效(BevelBitmapEffect)
(5)浮雕特效(EmbossBitmapEffect)

由于软件处理模式的效率相对较低,在有大量Visual对象或在有大量动画时慎用,此时你必须在效果与效率之间做一个相对的平衡。

下面先看看虚化效果:


上图:
第一个按钮是未经虚化的按钮效果;
第二个按钮是当Radius="1"时的效果;
第三个按钮是当Radius="2"时的效果;

这是XAML代码:

 <Button  Width="200" Height="30" Content="这是未虚化的按钮" Canvas.Left="24" Canvas.Top="8"/>
 <Button  Width="200" Height="30" Content="这是虚化了的按钮(Radius=1)" Canvas.Top="47" Canvas.Left="24">
    <Button.BitmapEffect>
       <BlurBitmapEffect Radius="1" KernelType="Box" />
  </Button.BitmapEffect>
 </Button>
 <Button  Width="200" Height="30" Content="这是虚化了的按钮(Radius=2)" Canvas.Top="87" Canvas.Left="24">
    <Button.BitmapEffect>
       <BlurBitmapEffect Radius="2" KernelType="Box" />
  </Button.BitmapEffect>
 </Button>

 再来看看外发光效果(辉光效果):


上图:
第一个是对TextBox的做了细微外发光特效处理的显示效果(参数值为:GlowColor="Blue" GlowSize="4" Noise="0.3" Opacity="0.4");

第二个对TextBox的外发光效果"力度比较大",我们发现效果非常明显(参数值:GlowColor="Blue" GlowSize="30" Noise="1" Opacity="0.4")。

这是相应的XAML代码:
 <TextBox Width="200" Canvas.Left="24" Canvas.Top="141">
  <TextBox.BitmapEffect>
   <OuterGlowBitmapEffect GlowColor="Blue" GlowSize="4" Noise="0.3" Opacity="0.4" />
  </TextBox.BitmapEffect>
 </TextBox>
  
  <TextBox Width="200" Canvas.Left="24" Canvas.Top="194">
      <TextBox.BitmapEffect>
        <OuterGlowBitmapEffect GlowColor="Blue" GlowSize="30" Noise="1" Opacity="0.4" />
      </TextBox.BitmapEffect>
    </TextBox> 

在GDI+中,如果要实现虚化等效果,是需要编写大量代码的,比如:虚化效果(外部链接)。而在WPF中,这些效果都已集成到系统中了。

参考链接:
How to: Create Text with a Shadow?
Cool WPF Effects Library
http://blogs.msdn.com/chkoenig/archive/2008/04/29/cool-wpf-effects-library.aspx

浅谈WPF中对控件的位图特效(WPF Bitmap Effects)的更多相关文章

  1. WPF中Ribbon控件的使用

    这篇博客将分享如何在WPF程序中使用Ribbon控件.Ribbon可以很大的提高软件的便捷性. 上面截图使Outlook 2010的界面,在Home标签页中,将所属的Menu都平铺的布局,非常容易的可 ...

  2. WPF中查找控件的扩展类

    在wpf中查找控件要用到VisualTreeHelper类,但这个类并没有按照名字查找控件的方法,于是搜索网络,整理出下面这个类,感觉用起来很是方便. 贴出来,供大家参考. /// <summa ...

  3. WPF中Popup控件在Win7以及Win10等中的对齐点方式不一样的解决方案 - 简书

    原文:WPF中Popup控件在Win7以及Win10等中的对齐点方式不一样的解决方案 - 简书 最近项目中使用弹出控件Popup,发现弹出框的对齐方式在不同的系统中存在不同(Popup在win10上是 ...

  4. WPF中Image控件的Source属性

    原文:WPF中Image控件的Source属性 imgBook 是一个Image控件,在后台代码中我想给它指定Source的属性.我先如下方式进行: Uri uri = new Uri(strImag ...

  5. WPF中PasswordBox控件的Password属性的数据绑定

    原文:WPF中PasswordBox控件的Password属性的数据绑定 英文原文:http://www.wpftutorial.net/PasswordBox.html 中文原文:http://bl ...

  6. 示例:WPF中Slider控件封装的缓冲播放进度条控件

    原文:示例:WPF中Slider控件封装的缓冲播放进度条控件 一.目的:模仿播放器播放进度条,支持缓冲任务功能 二.进度: 实现类似播放器中带缓存的播放样式(播放区域.缓冲区域.全部区域等样式) 实现 ...

  7. WPF中TreeView控件SelectedItemChanged方法的MVVM绑定

    问题描述:左侧treeview控件中点击不同类别的节点时,右侧的页面会显示不同的权限.比如对于My Publications,拥有Modify和Delete两种权限,对于My Subscription ...

  8. WPF中TreeView控件数据绑定和后台动态添加数据(二)

    写在前面:在(一)中,介绍了TreeView控件MVVM模式下数据绑定的方法.在这篇文章中,将总结给节点添加事件的方法,这样说有些不对,总之实现的效果就是点击某个节点,将出现对应于该节点的页面或者数据 ...

  9. WPF中TreeView控件数据绑定和后台动态添加数据(一)

    数据绑定: 更新内容:补充在MVVM模式上的TreeView控件数据绑定的代码. xaml代码: <TreeView Name="syntaxTree" ItemsSourc ...

随机推荐

  1. python3的函数

    #摘自廖雪峰的程序教程 函数名是变量: 如abs()是一个求绝对值的函数, >>> x = abs(-10) >>> x 10 变量可以指向函数 用f指向函数abs ...

  2. eclipse开发环境下集成activiti插件

    一.环境 eclipse 4.3.0 Activiti Designer 5.14.1 二.Activiti Designer 5.14.1插件安装 在eclipse中菜单help->Insta ...

  3. 高并发解决方案--负载均衡(HTTP,DNS,反向代理服务器)(解决大流量,高并发)

    高并发解决方案--负载均衡(HTTP,DNS,反向代理服务器)(解决大流量,高并发) 一.总结 1.什么是负载均衡:当一台服务器的性能达到极限时,我们可以使用服务器集群来提高网站的整体性能.那么,在服 ...

  4. php实现反转链表(链表题一定记得画图)(指向链表节点的指针本质就是一个记录地址的变量)($p->next表示的是取p节点的next域里面的数值,next只是p的一个属性)

    php实现反转链表(链表题一定记得画图)(指向链表节点的指针本质就是一个记录地址的变量)($p->next表示的是取p节点的next域里面的数值,next只是p的一个属性) 一.总结 链表反转两 ...

  5. [Elm] Installing and setting up Elm

    Before writing any Elm we need to first install the runtime locally. In this lesson we install the E ...

  6. CentOS下安装和配置MySQL-JDK-Tomcat-Nginx(个人官网环境搭建手册)

    今天,重新弄我的个人云主机的环境,准备运营自己用Java写的个人官网等网站. 服务器环境:阿里云CentOS 6.4位 包括以下脚本在内的绝大部分命令和脚本,都是我亲自执行过,靠谱的. 完整的&quo ...

  7. FireFox中使用showModalDialog显示的对话框不能用window.close()关闭

    FireFox中使用 showModalDialog 显示的对话框不能用 window.close() 进行关闭: 是FireFox的配置问题,解决方法如下: 在FireFox地址栏里输入 about ...

  8. [SQL]远程使用PostgreSQL Studio可视化查看PostgreSQL数据库

    1.下载 前往官网地址下载最新的PostgreSQL Studio,我下载的是 pgstudio_1.2-bin .zip,由于我的电脑里面没有tomcat. 假设电脑里有配置好tomcat,能够下载 ...

  9. amazeui-js插件-ui增强-日期组件如何使用(把实例做一下)

    amazeui-js插件-ui增强-日期组件如何使用(把实例做一下) 一.总结 一句话总结:需要jquery.js和amazeui.js一切才能使用 1.amazeui中的各种js效果要怎么才能使用? ...

  10. 小强的HTML5移动开发之路(24)—— PhoneGap Android开发环境搭建

    有关JDK及Android开发环境的搭建请看我前面的博文:http://blog.csdn.net/dawanganban/article/details/9748497 一.下载PhoneGap 下 ...