养生 装修 购物 美食 感冒 便秘 营销 加盟 小吃 火锅 管理 创业 搭配 减肥 培训 旅游

WPF技巧大全:[3]效果。。。效果效果!

时间:2024-10-20 20:40:19

上一篇介绍了华丽的Ae筠续师诈roGlass,但它毕竟用的是Win32技术,而没有展现WPF自身的功能。下面就来介绍一下WPF与众不同的Ef熠硒勘唏fect类,利用它可以像PhotoShop一样处理对象,不仅可用于图片,还能应用在视频、3D对象甚至控件!仅需一行标记就能搞定!(90%以上的技术只能应用在位图上,即使是控件也是用位图渲染表面,或者按照应用效果之后的外观计算并用代码绘图)

工具/原料

Blend(MicrosoftExpressionBlend或BlendforVisualStudio20xx)

(和Blend二选一)MicrosoftVisualStudio20xx

方法/步骤

1、先搭建一个你要的用户界面。下面是一个简单示例:(布愁抉痊歪局信息省略)<Gridx:Name=&q锇栀劐箨uot;LayoutRoot"> <Grid……><Grid.Background> <ImageBrushImageSource="pack://siteoforigin:,,,/Background.png"Stretch="UniformToFill"/> </Grid.Background> <LabelContent="Label"Background="Red"……/> <ButtonContent="Button"……/> <CheckBoxContent="CheckBox"IsChecked="True"……/> <ComboBoxIsEditable="True"Text="ComboBox"……/> <GroupBoxHeader="GroupBox"> <TreeView> <TreeViewItemHeader="Root"IsExpanded="True"> <TreeViewItemHeader="Node"IsExpanded="True"> <TreeViewItemHeader="Node"IsExpanded="True"> <BulletDecorator> <BulletDecorator.Bullet> <CheckBox/> </BulletDecorator.Bullet> <Button>Item</Button> </BulletDecorator> </TreeViewItem> </TreeViewItem> </TreeViewItem> <TreeViewItemHeader="Root"> <TreeViewItemHeader="Root"> </TreeViewItem> </TreeViewItem> </TreeView> </GroupBox> <ProgressBarValue="50"……/> <RadioButtonContent="RadioButton"IsChecked="True"……/> <TextBoxText="TextBox"……/> <Slider……/> <RectangleStroke="Black"……> <Rectangle.Fill> <LinearGradientBrushEndPoint="0,0.5"StartPoint="1,0.5"> <GradientStopColor="Blue"Offset="1"/> <GradientStopColor="Red"/> <GradientStopColor="Lime"Offset="0.5"/> </LinearGradientBrush> </Rectangle.Fill> </Rectangle><ImageSource="Warning.png"……/> </Grid> </Grid>

WPF技巧大全:[3]效果。。。效果效果!

2、如果你用Blend,可以在“资产”面板找到“效果”项,然后把效果拖到要应用的对象上即可。其中BlurEffect和DropShadowEffect是在默认命名空间System.Windows.Media.Effects中,剩下的13个在Blend附加的Microsoft.Expression.Media.Effects命名空间中。

WPF技巧大全:[3]效果。。。效果效果!

3、观察生成的XAML,可以发现这样的标记(以DropShadowEffe罕铞泱殳ct为例):<ObjectN锾攒揉敫ame……><ObjectName.Effect> <DropShadowEffect/></ObjectName.Effect></ObjectName>使用VisualStudio的话可以这样使用效果类。怎么样,很简单吧?

4、下面展示了几个常见的效果示例(部分来自WPFPixelShaderEffectsLibrary)。

WPF技巧大全:[3]效果。。。效果效果!

技术简介

1、Effect类提供自定义位图效果,当然也支持矢量图。所有的UIElement都有Effect属性,所有的Visual都有VisualEffect属性。

2、Effect类支持硬件加速,并且根据GPU性能或配置自动选择软件或硬件渲染。

3、要创建自定义的位图效果,需要继承ShaderEffect类以实现基于单个像素着色的自定义效果。ShaderEffect类不是用程序代码完成,而是使用像素着色器。像素着色器用HLSL(HighLevelShaderLanguage,高级着色语言)编写,原先供DirectX用来渲染3D表面。

4、方法:1.从预编译的高级着色语言(HLSL)字节流或文件(.ps)加载一个PixelShader。2.定义表示效果参数和基于Brush的画面输入的依赖项属性。使用RegisterPixelShaderSamplerProperty的重载之一将这些输入与在HLSL字节流中引用的注册号相关联。

© 一点知识