gpt4 book ai didi

WPF 效果 - 对文本

转载 作者:行者123 更新时间:2023-12-02 04:20:56 29 4
gpt4 key购买 nike

我见过各种关于 WPF 效果的引用,但它们似乎是针对位图的,而不是针对文本的。是否可以将除模糊投影以外的效果应用于XAML中的TextBlock对象?

我想要做的示例可能是轮廓笔划,或斜角/浮雕效果。

您可以在 XAML 中执行某些操作将 TextBlock 转换为位图,然后对其应用位图效果吗?

一个库就可以了,但我自己编码也可以,但我什至不知道从哪里开始。是否可以?如果是这样,你会怎么做?

最佳答案

我认为您在这里基本上有两个选择,您使用哪一个实际上取决于您想要实现的具体效果。您甚至可能两者都想要。

自定义元素

正如 Frank J 在他的回答中提到的,FormattedText 类具有强大的功能,允许您执行很多操作。您可以在this page上看到几个例子.

您可以构建一个扩展基类(例如 FrameworkElement)的自定义元素,并重写 OnRender 方法以使用 DrawText 呈现文本绘图上下文的方法。您将需要某种方法来指定和自定义要为每个控件实例使用的效果。我可以想到两种方法来做到这一点:

  1. 为每个可自定义的内容添加依赖属性到控件,并根据这些属性确定在 OnRender 中渲染的内容。

  2. 或者,向控件添加依赖属性以允许您指定要使用的效果。它将被键入为效果基类或接口(interface),您可以使用适当的 API 创建该效果基类或接口(interface)来使用该效果。然后,您可以为要实现的每种效果类型创建派生类。这与 WPF 使用 Effect 属性的模式类似,但使用您自己的效果系统。

注意:确保您定义的任何对渲染有影响的依赖属性设置 AffectsRender创建它们时在其元数据中标记。

着色器效果

另一个选择是利用 WPF 提供的现有效果系统并编写您自己的着色器效果。以这种方式设置创建效果的过程需要一些学习,但一旦你这样做了,添加新效果就相对容易了。

警告:如果在没有硬件加速的情况下渲染元素(例如渲染到 RenderTargetBitmap 时),则对元素应用效果可能会导致其渲染性能非常差。如果您很少使用它们,您不会注意到这一点,但如果屏幕上出现太多它们,您的应用程序就会变慢。小心使用。

以下是您可以开始使用着色器效果的步骤。

  1. 如果您还不熟悉,请了解 HLSL (至少是基础知识)。它是用于编写 WPF(和 DirectX)兼容着色器的语言。您只需要担心 WPF 的像素着色器,而不是顶点或几何着色器。

  2. 如果您没有 Windows SDK,请安装某个版本。它包括 HLSL 着色器编译器命令行程序:FXC 。您将需要它来编译着色器,然后才能在 WPF 中使用它们。您可以手动运行它,也可以通过在 Visual Studio 中配置生成步骤来简化流程,以便在给定项目中运行它。

  3. 编译着色器后,您将需要将它们作为资源添加到将定义它们的 WPF 库或应用程序中。

  4. 最后,创建并实现一个扩展 ShaderEffect 的类并将其设置为与您的着色器一起使用。此类的实例可以分配给任何元素上的 Effect 属性,类似于 WPF 附带的内置效果。

如果您想要有关着色器效果的更完整指南,请在网络上搜索 WPF 着色器效果,您会找到一些。

现有着色器效果

如果您不需要完全自定义的东西,可以使用第三方着色器效果。甚至还有一些effects created by Microsoft作为独立下载提供。

关于WPF 效果 - 对文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30515927/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com