一些WPF中的滤镜特效——Effect Library

WPF支持类似PhotoShop的滤镜功能,称之为Effect。在.Net 4.0中,WPF就废弃了对BitMapEffect的支持,转向使用支持GPU加速的Effect类,例如,我们可以使用如下代码生成带有阴影效果的按钮。

1 <Button ... >
2     <Button.Effect>
3         <DropShadowEffect />
4     </Button.Effect>
5     Hello
6 </Button>

系统已经自带了十来种Effect,基本上能满足我们的大部分的处理要求。如果有HLSL基础,我们可以写出自己的特效。MSDN的如下两篇文章详细的介绍了这一过程:

微软也自己提供了一些特效库WPF Effects Library,这个库在Channel 9上可以预览,它提供了许多常用的滤镜特效:如锐化、高光、扭曲、模糊、高光等,另外,还提供了一系列过渡特效,如百叶窗、溶解、旋转、缩放等。可以方便我们打造炫酷的WPF程序。也支持Sliverlight,不过蛋疼的WinRT是不支持Effect的,WinRT的API和WPF比起来简直弱爆了,期待Win10版本的Metro程序等多开放一些API吧,否则确实很提不起什么开发的动力来。

这个库编译起来比较麻烦(有的地方用VS2013编译不过去),因此我这里上传了一个编译好了的一个版本 点击下载。需要说明的是:

  1. 原始工程中内置了许多预览图片,导致体积较大,因此我去掉了内置的位图,TransitionEffects使用的是本地"我的图片"文件夹中的jpg 格式文件,如果该文件夹中没有图片的时候,则无法预览。
  2. TransitionEffects工程中使用了几张png文件作为蒙版,导致该库的体积达到了2m(感觉这些蒙版完全可以运行时生成,不知道为什么没有这么做),发布不是很方便。因此我编译了一个去掉了这些图片的版本。

由于整个工程较大,我上传到了百度网盘上了:点击下载

时间: 2024-12-04 10:21:41

一些WPF中的滤镜特效——Effect Library的相关文章

WPF 中的 Pack URI-访问程序集资源

在 Windows Presentation Foundation (WPF) 中,使用统一资源标识符 (URI) 标识和加载文件的方式有很多,包括: 指定当应用程序第一次启动时显示的用户界面 (UI). 加载图像. 导航到页 加载不可执行的数据文件. 在代码中使用 Pack URI 在代码中,可以通过实例化 Uri 类并将 pack URI 作为参数传递给构造函数来指定 pack URI.下面的示例说明了这一点. C# Uri uri = new Uri("pack://application

转载 [WPF][C#]在WPF中内嵌WindowsForm控件-使用WindowsFormsControlLibrary

[WPF][C#]在WPF中内嵌WindowsForm控件-使用WindowsFormsControlLibrary 在[WPF][C#]在WPF中内嵌WindowsForm控件一文中为各位介绍了直接在WPF中使用XAML来嵌入Windows Form控件的作法,不过不是每个人都喜欢写XAML,而且有时候会需要把已经存在的Windows Form应用程序嵌入到WPF中,所以这次就来跟大家介绍怎么使用参考dll档的方式,把dll中的Windows Form加到WPF中. 都说了要使用Windows

WPF中的动画——(一)基本概念

WPF的一个特点就是支持动画,我们可以非常容易的实现漂亮大方的界面.首先,我们来复习一下动画的基本概念.计算机中的动画一般是定格动画,也称之为逐帧动画,它通过每帧不同的图像连续播放,从而欺骗眼和脑产生动画效果.其原理在维基百科上有比较详尽的解释,这里就不多介绍了. 也就是说,我们要产生动画,只需要连续刷新界面即可.例如,我们要实现一个宽度变化的按钮的动画,可以用如下方式来实现: private void MainWindow_Loaded(object sender, RoutedEventAr

WPF中异步更新UI元素

XAML 界面很简单,只有一个按钮和一个lable元素,要实现点击button时,lable的内容从0开始自动递增. <Grid> <Label Name="lable_plus" Content="0"/> <Button Content="Button" Click="button_Click" Height="23" Name="button" Wid

再论WPF中的UseLayoutRounding和SnapsToDevicePixels

以下摘自: http://blog.csdn.net/muzizongheng/article/details/14163227    的博客: 再论WPF中的UseLayoutRounding和SnapsToDevicePixels 分类:             自我心的              2013-11-05 11:16     732人阅读     评论(0)     收藏     举报 wpf自我心的UseLayoutRoundingGridSplitter模糊 最近在调试项目

在WPF中实现玻璃模糊效果

在WPF中实现玻璃模糊效果还是比较简单的,主要方式如下: 添加一个Rectangle或其它控件作为玻璃放到顶部图层 将底部图像作为Brush(大多数的时候用VisualBrush)填充到Rectangle中 对该Rectangle添加高斯模糊效果 在该Rectangle上叠加一些渐进笔刷实现光照效果 整个实现还是有点工作量的,我在网站Aero effect: Blurry transparency in WPF上找到了一个比较完整的例子,效果实现得很不错,并且还支持拖拽. 这个例子我在网盘中也备

WPF中的动画——(五)关键帧动画

与 From/To/By 动画类似,关键帧动画以也可以以动画形式显示目标属性值. 和From/To/By 动画不同的是, From/To/By 动画只能控制在两个状态之间变化,而关键帧动画则可以在多个状态之间变化,例如,对于前面那个改变按钮宽度的例子,如果我们要实现如下效果: 在2秒时将宽度从 0变为350 在7秒时将宽度变为50 在9秒的时候将其宽度变为200 虽然我们可以用三个From/To/By 动画组合实现类似效果,但是这样一来麻烦,二来要感知动画完成事件,不方便在XAML中使用.此时我

MVVM模式解析和在WPF中的实现(三) 命令绑定

MVVM模式解析和在WPF中的实现(三) 命令绑定 0x00 命令绑定要达到的效果 命令绑定要关注的核心就是两个方面的问题,命令能否执行和命令怎么执行.也就是说当View中的一个Button绑定了ViewModel中一个命令后,什么时候这个Button是可用的,按下Button后执行什么操作.解决了这两个问题基本就实现了命令绑定.另外一个问题就是执行过程中需要的数据(参数)要如何传递.本次主要探讨这几个问题. 0x01 命令绑定的实现 自定义一个能够被绑定的命令需要实现ICommand接口.该接

关于WPF中关于样式和模板的区别

百度了下,改天整理. WPF中关于样式和模板的区别: 回答一: 1.WPF样式类似于Web应用程序中的CSS,在WPF中可以为控件定义统一的样式(Style).样式属于资源的一种,例如为Button定义统一的背景颜色和字体: <Window.Resources> <Style  TargetType="Button"> <Setter Property="Background" Value="Yellow" />