WPF中的效果Effect

这篇具有很好参考价值的文章主要介绍了WPF中的效果Effect。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

WPF中的效果Effect

前言

WPF提供了可应用于任何元素的可视化效果。效果的目标是提供一种简便的声明式方法,从而改进文本、图像、按钮以及其他控件的外观。不是编写自己的绘图代码,而是使用某个继承自Effect的类,以立即获得诸如模糊、光辉以及阴影等效果。

效果类

名称 说明 属性
BlurEffect 模糊元素中的内容 Radius,KernelType,RenderingBias
DropShadowEffect 在元素背后添加矩形阴影 BlurRadius,Color,Direction,Opacity,ShadowDepty,RenderingBias
ShaderEffect 应用像素着色器,像素着色器是使用高级着色语言事先制作好的并且已经编译过的效果 PixelShader

BlurEffect类

最简单的WPF效果是BlurEffect 类。该类模糊元素的内容,就像通过失焦透镜观察到的效果。通过增加Radius属性的值(默认值是5)可增加模糊程度。

            <Button Content="blurred(radius=2)" Padding="5" Margin="3">
                <Button.Effect>
                    <BlurEffect Radius="2"/>
                </Button.Effect>
            </Button>
            <Button Content="blurred(radius=5)" Padding="5" Margin="3">
                <Button.Effect>
                    <BlurEffect Radius="5"/>
                </Button.Effect>
            </Button>
            <Button Content="blurred(radius=20)" Padding="5" Margin="3">
                <Button.Effect>
                    <BlurEffect Radius="20"/>
                </Button.Effect>
            </Button>

WPF中的效果Effect,WPF,wpf

DropShadowEffect类

DropShadowEffect类在元素背后添加了轻微的偏移阴影。

DropShadowEffect类的属性

名称 说明
Color 设置阴影的颜色(默认黑色)
BlurRadius 确定阴影离开内容多远,单位为像素(默认值为5).将该属性设置为0会创建外侧辉光(outer-glow)效果,该效果会在内容周围添加晕彩(halo of color)
Opacity 使用从1(完全不透明,默认值)到0(完全透明)之间,使阴影部分透明
Direction 使用从0到360之间的角度值指定阴影相对于内容的位置。将该属性设置为0会将阴影放置到右边,增加该属性的值会逆时针移动阴影,默认值是315,该值会将阴影放置到元素的右下方
            <TextBlock FontSize="20" Margin="5" >
                <TextBlock.Effect>
                    <DropShadowEffect/>
                </TextBlock.Effect>
                <TextBlock.Text>basic dropshadow</TextBlock.Text>
            </TextBlock>
            <TextBlock FontSize="20" Margin="5" >
                <TextBlock.Effect>
                    <DropShadowEffect Color="SlateBlue"/>
                </TextBlock.Effect>
                <TextBlock.Text>light blue dropshadow</TextBlock.Text>
            </TextBlock>
            <TextBlock FontSize="20" Foreground="White"  Margin="5" >
                <TextBlock.Effect>
                    <DropShadowEffect BlurRadius="15"/>
                </TextBlock.Effect>
                <TextBlock.Text>blurred dropshadow with white text</TextBlock.Text>
            </TextBlock>
            <TextBlock FontSize="20" Foreground="Magenta" Margin="5" >
                <TextBlock.Effect>
                    <DropShadowEffect ShadowDepth="0"/>
                </TextBlock.Effect>
                <TextBlock.Text>close dropshadow</TextBlock.Text>
            </TextBlock>
            <TextBlock FontSize="20" Foreground="LimeGreen" Margin="5" >
                <TextBlock.Effect>
                    <DropShadowEffect ShadowDepth="25"/>
                </TextBlock.Effect>
                <TextBlock.Text>distant dropshadow</TextBlock.Text>
            </TextBlock>

WPF中的效果Effect,WPF,wpf

有时候可通过将元素添加到高层的容器中来模拟多个效果,例如,为TextBlock元素使用阴影效果,然后将其放入使用效果的stackpanel面板中。大多数情况下,应避免这种变通方法,因为这种方法会成倍增加渲染工作量并会降低性能。相反,应当查找能够完成所有内容的单个效果。

ShaderEffect类

ShaderEffect类没有提供就绪的效果。相反,它是一个抽象类,可继承该类以创建自己的自定义像素着色器。通过使用ShaderEffect类(或从该类派生的自定义效果),可实现更多的效果,而不仅局限于模糊和阴影。

可能与你的预期相反,实现像素着色器的逻辑不是直接在效果类中使用C#代码编写的,相反,像素着色器是用高级着色语言编写的,该语言是Microsoft DirectX的一部分。

将HLSL文件编译成.ps文件,就可以在项目中使用它了。需要将文件添加到已有的WPF项目中,在解决方案中选择该文件,并将它的生成方式属性设置为Resource。最后要创建一个继承自ShaderEffect的自定义类并使用该资源。

    public class customeEffect : ShaderEffect
    {
        public customeEffect()
        {
            Uri uri = new Uri("Effect.ps", UriKind.Relative);

            PixelShader = new PixelShader();
            PixelShader.UriSource = uri;
        }
    }

现在创建自定义效果类的一个实例,应用它设置元素的Effect属性:

            <Image>
                <Image.Effect>
                    <local:customeEffect></local:customeEffect>
                </Image.Effect>
            </Image>

除非是非常专业的图形开发人员,否则获取更高级像素着色器的最好方法不是自己编写HLSL代码。相反,应当查找现成的HLSL例子,甚至更好的使用已经提供了自定义效果类的第三方WPF组件。文章来源地址https://www.toymoban.com/news/detail-665655.html

到了这里,关于WPF中的效果Effect的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 在WPF窗口中增加水印效果

    ** ** 以Canvas作为水印显示载体,在Canvas中创建若干个TextBlock控件用来显示水印文案,如下图所示 然后以每一个TextBlock的左上角为中心旋转-30°,最终效果会是如图红线所示: 为了达到第一行旋转后刚好与窗口上边沿齐平,需要计算第一行其实位置的Top坐标,由于旋转角度为

    2024年02月04日
    浏览(35)
  • WPF 中实现截图(含保存效果)

    实现效果如当程序运行就实现截图,截图后也在内存流当中进行保留 步骤1 创建窗体注册鼠标点击和鼠标悬浮的事件鼠标点击时获取开始鼠标坐标位置 具体详细步骤看代码中的注释

    2024年02月12日
    浏览(61)
  • WPF实现类似ChatGPT的逐字打印效果

    前一段时间ChatGPT类的应用十分火爆,这类应用在回答用户的问题时逐字打印输出,像极了真人打字回复消息。出于对这个效果的兴趣,决定用WPF模拟这个效果。 真实的ChatGPT逐字输出效果涉及其语言生成模型原理以及服务端与前端通信机制,本文不做过多阐述,重点是如何用

    2024年02月13日
    浏览(37)
  • WPF 自定义控件完成库容表盘显示效果

    先看一下显示效果:        需要注意的地方有以下几点: 表盘的刻度分部,长刻度和短刻度显示。 在数值80W时,需要更改刻度盘的颜色渐变。 在数值80W时,更改库容总数背景的显示,也是颜色渐变。刻度盘控件属性定义: 刻度盘的定义: 设置刻度盘的style: 库容总数背

    2024年02月16日
    浏览(33)
  • WPF自定义控件之ItemsControl鱼眼效果

    原理 先获取鼠标在控件中的坐标,在获取其每一项相对于ItemsControl的坐标,然后计算每一项离当前鼠标的距离,在根据这个距离,对其每一项进行适当的缩放 实现 创建一个类,命名为FishEyeItemsControl   public class FishEyeItemsControl : ItemsControl   添加应用鱼眼效果方法(控制其控

    2024年02月04日
    浏览(37)
  • C# WPF实现动画渐入暗黑明亮主题切换效果

    最近在Bilibili的桌面端看到一个黑白主题切换的效果感觉,挺有意思。于是我使用WPF尝试实现该效果。 主要的切换效果,基本实现不过还存在一些小瑕疵,比如字体等笔刷不能跟随动画进入进行切换。因为Bilibili的客户端是用electron写的,前端使用的html,css确实太强了,这咱只

    2024年02月16日
    浏览(44)
  • 【WPF.NET开发】WPF中的拖放

    WPF 中的拖放支持 数据传输 拖放事件 实现拖放 拖放示例 本主题概述 Windows Presentation Foundation (WPF) 应用程序中的拖放支持。 拖放通常指一种数据传输方法:使用鼠标(或一些其他指针设备)选择一个或多个对象,将其拖至用户界面 (UI) 中的某些所需拖放目标之上并放置。 拖

    2024年01月21日
    浏览(34)
  • 【WPF.NET开发】WPF中的窗口

    目录 1、窗口类 2、实现窗口 2.1 为 MSBuild 配置窗口 3、窗口生存期 3.1 打开窗口 3.2 窗口激活 3.3 关闭窗口 3.4 窗口生存期事件 4、窗口位置 4.1 最顶层窗口和 z 顺序 5、窗口大小 6、大小调整属性的优先级顺序 7、窗口状态 8、窗口外观 8.1 重设大小模式 8.2 Window style 8.3 任务栏显示

    2024年02月04日
    浏览(42)
  • 【WPF.NET开发】WPF中的文档

    文档类型 文档控件和文本布局 文档打包 XPS 文档 Windows Presentation Foundation (WPF) 提供丰富的文档功能,可创建旨在比前几代 Windows 更易于访问和读取的高保真内容文档。 除增强功能和质量外,WPF 还对文档显示、打包和安全性能提供集成服务。 本主题介绍 WPF 文档类型和文档打

    2024年01月17日
    浏览(44)
  • 【WPF.NET开发】WPF中的版式

    改进的文本质量和性能 丰富的版式 增强的国际文本支持 增强的字体支持 新的文本应用程序编程接口 (API) 本主题介绍 WPF 的主要版式功能。 这些功能包括改进的文本呈现质量和性能、OpenType 版式支持、增强的国际文本、增强的字体支持和新的文本应用程序编程接口 (API)。

    2024年02月01日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包