- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我见过各种关于 WPF 效果的引用,但它们似乎是针对位图的,而不是针对文本的。是否可以将除模糊或投影以外的效果应用于XAML中的TextBlock对象?
我想要做的示例可能是轮廓笔划,或斜角/浮雕效果。
您可以在 XAML 中执行某些操作将 TextBlock 转换为位图,然后对其应用位图效果吗?
一个库就可以了,但我自己编码也可以,但我什至不知道从哪里开始。是否可以?如果是这样,你会怎么做?
最佳答案
我认为您在这里基本上有两个选择,您使用哪一个实际上取决于您想要实现的具体效果。您甚至可能两者都想要。
正如 Frank J 在他的回答中提到的,FormattedText
类具有强大的功能,允许您执行很多操作。您可以在this page上看到几个例子.
您可以构建一个扩展基类(例如 FrameworkElement
)的自定义元素,并重写 OnRender
方法以使用 DrawText
呈现文本绘图上下文的方法。您将需要某种方法来指定和自定义要为每个控件实例使用的效果。我可以想到两种方法来做到这一点:
为每个可自定义的内容添加依赖属性到控件,并根据这些属性确定在 OnRender
中渲染的内容。
或者,向控件添加依赖属性以允许您指定要使用的效果。它将被键入为效果基类或接口(interface),您可以使用适当的 API 创建该效果基类或接口(interface)来使用该效果。然后,您可以为要实现的每种效果类型创建派生类。这与 WPF 使用 Effect
属性的模式类似,但使用您自己的效果系统。
注意:确保您定义的任何对渲染有影响的依赖属性设置 AffectsRender创建它们时在其元数据中标记。
另一个选择是利用 WPF 提供的现有效果系统并编写您自己的着色器效果。以这种方式设置创建效果的过程需要一些学习,但一旦你这样做了,添加新效果就相对容易了。
警告:如果在没有硬件加速的情况下渲染元素(例如渲染到 RenderTargetBitmap 时),则对元素应用效果可能会导致其渲染性能非常差。如果您很少使用它们,您不会注意到这一点,但如果屏幕上出现太多它们,您的应用程序就会变慢。小心使用。
以下是您可以开始使用着色器效果的步骤。
如果您还不熟悉,请了解 HLSL (至少是基础知识)。它是用于编写 WPF(和 DirectX)兼容着色器的语言。您只需要担心 WPF 的像素着色器,而不是顶点或几何着色器。
如果您没有 Windows SDK,请安装某个版本。它包括 HLSL 着色器编译器命令行程序:FXC 。您将需要它来编译着色器,然后才能在 WPF 中使用它们。您可以手动运行它,也可以通过在 Visual Studio 中配置生成步骤来简化流程,以便在给定项目中运行它。
编译着色器后,您将需要将它们作为资源添加到将定义它们的 WPF 库或应用程序中。
最后,创建并实现一个扩展 ShaderEffect 的类并将其设置为与您的着色器一起使用。此类的实例可以分配给任何元素上的 Effect
属性,类似于 WPF 附带的内置效果。
如果您想要有关着色器效果的更完整指南,请在网络上搜索 WPF 着色器效果,您会找到一些。
现有着色器效果
如果您不需要完全自定义的东西,可以使用第三方着色器效果。甚至还有一些effects created by Microsoft作为独立下载提供。
关于WPF 效果 - 对文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30515927/
我可以使用 javascript 和其他所有东西,但在重新发明轮子之前,我想知道是否已经有一个类似的 jquery 插件,因为我想使用那个框架而不是 mootools。 我没有钱的问题,特别是 5 欧
我正在 React 应用程序中处理动画。我需要动画在悬停 后开始工作。我尝试了 :hover:after css 但不起作用。将鼠标悬停在图像上后动画可以工作,但我需要在悬停后开始。将鼠标悬停在图像上
我正在使用 jQuery 在按钮单击时实现 slider 效果。我的代码是: $(document).ready(function() { $("#mybutton").click(functio
我需要一个div标签在屏幕右侧滑出,如何使用jQuery获得这种效果?我一直在看这里:http://api.jquery.com/category/effects/sliding/而且这似乎不是我要找
我正在使用此代码实现页面 curl 效果......它在模拟器和设备中工作正常......但它不是(setType:@“pageCurl”)苹果记录的api,这导致它被iPhone拒绝App Stor
我见过各种关于 WPF 效果的引用,但它们似乎是针对位图的,而不是针对文本的。是否可以将除模糊或投影以外的效果应用于XAML中的TextBlock对象? 我想要做的示例可能是轮廓笔划,或斜角/浮雕效果
我见过各种关于 WPF 效果的引用,但它们似乎是针对位图的,而不是针对文本的。是否可以将除模糊或投影以外的效果应用于XAML中的TextBlock对象? 我想要做的示例可能是轮廓笔划,或斜角/浮雕效果
我正在尝试模拟这种效果:http://meyerweb.com/eric/css/edge/complexspiral/demo.html在我的博客上:http://segment6.blogspot
我尝试将样式应用到 Accordion Pane ,但遇到了问题。 这行不通。 accordion.setEffect(new DropShadow(BlurType.ONE_PASS_BOX, Co
关于 Datatables website 的教程足够清楚了: 在我告诉 Datatables 我正在谈论哪一列后,我只需将切换按钮放入: column.visible( ! column.visib
我正在寻找 scratchOut 效果,随便叫它什么。 这是从前景中删除图像的效果,因此背景图像变得可见。 我曾尝试使用 jquery 插件重新创建此效果,但它并不像我希望的那样流畅。 有没有人有这种
本文实例讲述了android实现文字和图片混排(文字环绕图片)效果。分享给大家供大家参考,具体如下: 在平时我们做项目中,或许有要对一张图片或者某一个东西进行文字和图片说明,这时候要求排版美观,所
本文实例讲述了Javafx简单实现【我的电脑资源管理器】效果。分享给大家供大家参考。具体如下: 1. java代码: ?
我是 ngrx 的新手,正在尝试让我的 ngrx 商店的 @Effect 函数正常工作。下面的代码显示了如果我没有使用 ngrx 商店,服务是如何工作的。我首先调用 http.get 来获取列表,然后
基本上我搜索了很多,解决方案建议应用一些 PNG 掩码或不提供所需的解决方案。 我发现了什么。 ffmpeg -i main.mkv -i facecloseup.mkv -filter_compl
有关使用从商店中选择的状态的效果的 Ngrx 文档状态(没有双关语意) Note: For performance reasons, use a flattening operator like co
我有一个数据网格控件,我在其中使用名为 FastShadow 的自定义效果,它就像一个光晕。 我希望效果在其边界之外发光,这样很好,但是当我在顶部绘制另一个形状时,我不希望这个形状受到影响。在本例中,
除了子 div.exception 中的所有内容,我想将 div.main 中的所有文本设为灰色。 div.exception 应该看起来好像类 main 从未添加到父 div。 这可能吗?如果是这样
我有一个 PDF 文件,我想重现此包页面中的页面 curl 效果: https://pub.flutter-io.cn/packages/page_turn 我试过用这个 page_turn插件,它需
我想测试一个效果如下: 如果调度了 LoadEntriesSucces 操作,则效果开始 等待 5 秒 5 秒后发送 http 请求 当响应到达时,将分派(dispatch)新的操作(取决于响应是成功
我是一名优秀的程序员,十分优秀!