当 FlowDocument 放置在带有自定义玻璃的窗口中时,子元素中的 ClearType 会丢失

2024-01-28

因此,新的 WPF 4 文本渲染看起来很棒,但在窗口上启用航空玻璃效果需要将背景更改为透明,这当然会禁用 ClearType 渲染。

使用提供的 RenderOptions.ClearTypeHint=Enabled 允许您指定子元素以从树中的该点重新启用 ClearType 渲染。我发现了一些其他主题,讨论如何为 RichTextBox 和 FlowDocumentScrollViewer 内部使用的 ScrollViewer 执行此操作,并且创建自定义样式确实可以解决此问题,以便我的 FlowDocument 再次获得 ClearType 渲染。

但是,这仅适用于 FlowDocument 中的顶级段落。如果我添加漂浮物、图形或表格,其中的任何文本都会再次莫名其妙地变成灰度。我知道玻璃效果是罪魁祸首,因为禁用它会重新启用 ClearType 渲染。

我使用 Snoop 查看了视觉树,但主要内容(正确渲染)和子内容(灰度)都具有类似的元素层次结构,没有任何可以附加 RenderOptions.ClearTypeHint 的内容。

有人遇到过这个问题吗?有解决方法或解决方案吗?我检查了 Connect,但没有任何关于此的错误。这是一个相当烦人的问题。


经过大量研究,并比较了不同控制装置在航空玻璃上和关闭后的工作方式,我找到了一些答案。 TextBox 控件也无法正常工作,但 FlowDocument 的部分内容和 TextBlock 之类的东西可以正常工作,这促使我探索原因。

在反射器中深入研究了一段时间后,我发现当使用高级文本格式化 API 获取文本并将其渲染到绘图上下文上时,RenderOption 标志基本上会被忽略,因为绘图系统从根视觉(窗口)知道透明度已启用。一旦发生这种情况,世界上所有的 RenderOptions 标志都不会恢复 ClearType。

不过,我确实偶然发现了一个解决方法。如果您有权访问 DrawingContext 并且自己进行低级文本渲染,则可以在文本后面执行 DrawRectangle 并进行填充,并且 ClearType 会重新启用。我认为这是渲染器确保它有合适的背景可供绘制的唯一方法。

总之,您需要进行自己的文本绘制,此外您还需要在文本后面使用相同的 DrawingContext 显式绘制背景,以便 ClearType 能够正确呈现。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当 FlowDocument 放置在带有自定义玻璃的窗口中时,子元素中的 ClearType 会丢失 的相关文章

  • 缓冲数据库游标中的数据,同时保持 UI 响应

    我有一个已填充的数据库目录和一个可用于检索对象的游标 这个目录显然可能非常大 我想做的是使用反应式用户界面缓冲数据 同时保持 UI 数据绑定和响应 我按照步骤操作here http www interact sw co uk iangblo
  • 如何在清除排序描述后删除wpf网格排序箭头

    我单击网格标题对列进行排序 然后单击 重置 按钮以通过其集合视图清除排序描述 但排序箭头图标仍然保留在标题中 如何去除它 我在尝试弄清楚如何完全清除网格中的排序时遇到了这个问题 感谢 krishnaaditya 回答如何清除标题中的排序箭头
  • WPF 错误:属性元素不能位于元素内容的中间。它们必须位于内容之前或之后

    我有一个MergedDictionaries and DateTemplate里面一个ResourceDictionary一切都很好 直到我添加了一个Converter
  • WPF DataGrid 验证/绑定模式错误

    我创建了一个非常简单的新项目 仅测试 Microsoft WPF DataGrid 行为 不涉及其他 我只使用标准的 DataGrid
  • 如何从 XAML 设置 WPF 用户控件属性?

    我试图从 XAML 设置同一用户控件的多个实例的 fill 属性 以便区分它们 我在控件的 C 代码隐藏中使用依赖属性 并在实例化控件时在 XAML 中引用该属性 这是我尝试过的简化示例 首先是用户控件的 XAML
  • 如何识别 WPF 文本框中的 ValidationError 工具提示位置

    我添加了一个箭头来指示工具提示中的文本框 当文本框远离屏幕边缘时 这非常有效 但是当它靠近屏幕边缘时 工具提示位置发生变化 箭头显示在左侧 Here is the Image Correct as expected since TextBo
  • WPF .exe - 大文件大小

    我正在开发一个 WPF 应用程序 发现 exe 大小超过 1 2MB 我想减少最终可执行文件的大小 代码不过200kb 我在项目中使用了一些 png图片 总共占用了20kb左右 为什么最终的可执行文件这么大 我使用 ILDASM 统计信息来
  • 如何在控件内引用用户控件主机的 StaticResource?

    我有以下内容StaticResource in my Window Resources
  • 如何将一个控件的属性绑定到另一个控件的属性?

    我希望当表单被禁用时 表单中的 保存 按钮消失 我这样做 this formStackPanel IsEnabled someValue if this formStackPanel IsEnabled this saveButton Vi
  • 使用 Assembly.ReflectionOnlyLoadFrom 加载 WPF 项目引用的程序集时出现奇怪的 FileLoadException

    我有一个自定义 MSBuild 任务 可以查看程序集内部以获取一些属性元数据 Assembly assembly Assembly ReflectionOnlyLoadFrom AssemblyFile 这是我们的自动化构建 发布流程所使用
  • 怎么让画笔变得光滑,中间没有线条

    大家好 正如你在之前的画笔中看到的 中间有线条 不太顺利 如何使其平滑 如何删除该行 我用混合创建它
  • WPF 在菜单上选择项目或在视图模型中获取命令参数

    我正在寻找几个小时来解决一个简单的问题 我想在我的菜单项上使用 SelectedItem 但经过几个小时的 stackoverflow 我发现这是不可能的 我发现了很多关于 CommandParameter 的信息 但我不明白它是如何工作的
  • WPF 如何从 DataGrid 转换为 DataTable?

    嗨 我正在关注这个guide http www wpf tutorial com datagrid control details row 以了解如何使用 DataGrid 我遇到的问题是如何将 DataGrid 中的数据转换为 DataT
  • C#:将音频文件从服务器流式传输到客户端

    我目前正在编写一个应用程序 该应用程序将允许用户安装某种形式的应用程序 可能是 Windows 服务 该应用程序将在其 PC 上打开一个端口 并在硬盘上指定一个特定的目的地 然后能够流式传输 mp3 文件 然后 我将有另一个应用程序 该应用
  • 使用 RenderTargetBitmap 的 WPF 画布区域的快照

    我想在我的应用程序中创建画布区域的快照 我使用 Visual Brush 来获取快照并使用 PngEncoder 保存相同的快照 但生成的 PNG 只是一个空的黑色图像 我不确定问题是与创建的 BitmapSource 还是 PNGEnco
  • 测量 WPF 中的文本

    使用WPF 测量大量短字符串最有效的方法是什么 具体来说 我想确定每个字符串的显示高度 给定统一格式 相同的字体 大小 粗细等 以及字符串可能占用的最大宽度 最低级的技术 因此为创意优化提供了最大的空间 是使用 GlyphRuns 它没有很
  • 以编程方式绑定 WPF 中的附加属性

    我在用着杰森 坎普很酷CueBanner class http www ageektrapped com blog the missing net 4 cue banner in wpf i mean watermark in wpf 对于
  • 将字符串数组添加到组合框

    我有一个组合框 我想加载一个从方法返回的字符串数组 我目前只是用 for 循环加载它 但我认为应该可以将字符串数组直接分配给组合框 我只是想改进我的代码 我已经做了一些搜索 并且看到了使用数据范围或数据源的答案 但这些似乎都不起作用 我也尝
  • 调用异步方法在视图模型的构造函数中加载数据有警告

    我的视图包含一个 ListView 它显示来自互联网的一些数据 我创建一个异步方法来加载数据并在我的视图模型的构造函数中调用该方法 它有一个警告提示我现在使用await关键字 还有其他解决方案可以在构造函数中异步加载数据吗 有几种可以应用的
  • WPF圆形奇怪边框

    Hi 我现在已经尝试了 2 天多的时间来创建处于按下状态的切换按钮 如上图所示 但上边框让我头疼 有谁知道如何创建向下的圆角 背景是从上到下的线性渐变 b8c7d6 a8b3c4 任何帮助将不胜感激 我有这样的东西 但它与设计相去甚远

随机推荐

  • iPhone:通过蓝牙序列化和发送对象?

    序列化对象并通过蓝牙 或网络连接 发送它的最佳方法是什么 你可以使用gamekit http developer apple com library ios documentation NetworkingInternet Conceptu
  • 绘制从远程服务器下载的图像

    我需要执行以下操作 从服务器下载 PNG 资源 根据状态在该图像上绘制几个具有不同颜色的矩形 在可缩放图像视图中显示该图像 我在使用 Canvas 的 Android 应用程序中有一个工作代码 但我不知道如何使用 Flutter 来做到这一
  • Java中如何让程序等待按钮按下

    现在 我不确定这是否可能 甚至是完成我想要做的事情的最佳方法 但基本上我正在使用一个非常简单的 Swing GUI 创建一个非常简单的模拟程序 每轮模拟结束后 界面上的一些按钮都会启用 供用户进行更改 然后用户可以按 继续 按钮再次开始模拟
  • JPA 继承 - 更改实体类型

    我有两节课 Entity Inheritance strategy InheritanceType SINGLE TABLE DiscriminatorColumn name PERSONTYPE DiscriminatorValue va
  • 草皮遮罩返回没有洞的多边形

    我得到一些奇怪的结果草皮 mask https turfjs org docs mask 这是polygon我正在尝试运行mask 功能 https gist githubusercontent com Stophface 50155878
  • 在参数中运行带引号的命令适用于commands.getoutput(),但不适用于子进程模块

    我正在创建一个 python 程序 它调用许多其他程序和脚本 在 Unix SUNos Linux 上 除了 1 个脚本之外 我在所有地方都使用子进程 我不使用子进程的脚本是一个 perl 脚本 它已被制作成可执行文件 不知何故 它不允许我
  • 4 次矩阵乘法的 np.einsum 性能

    给定以下 3 个矩阵 M np arange 35 37 59 reshape 35 37 59 A np arange 35 51 59 reshape 35 51 59 B np arange 37 51 51 59 reshape 3
  • SqlDataReader 参数不起作用

    我有一个 Windows 窗体 要求用户在 textbox1 中输入 pcname 然后尝试使用SqlDataReader从数据库中读取以获取电脑IP地址 然后将电脑驱动器映射到我的本地电脑 但由于某种原因 当我在 SQL 参数中使用文本框
  • 不要将 --build-id 从 gcc 传递给链接器

    我正在尝试使用以下命令编译嵌入式手臂处理器gcc arm linux gnueabi and nostdlib删除对 c 库和启动文件的依赖关系 该芯片没有任何解释 elf 文件的方法 因此使用objcopy O binary 我可以从中删
  • OpenGL 纹理上传:UNSIGNED_BYTE 与 UNSIGNED_INT_8_8_8_8

    我正在调用 glTexSubImage2D 如果我的像素格式是GL RGBA 然后是像素类型GL UNSIGNED BYTE and GL UNSIGNED INT 8 8 8 8完全等价 另外 这两对等价吗 Format GL RGBA
  • GATT 配置文件和 UART 服务

    我是开发通过蓝牙连接到外围设备的移动应用程序的新手 我搜索到 GATT 是用于蓝牙LE 通信的相关配置文件 但我们的客户建议我们使用 UART 服务 现在我很困惑 1 这两件事是如何关联的 2 我们是否必须选择其中之一 如果是的话 每一个的
  • Excel 条件动态数据验证

    我在使用 Excel 时遇到一个小问题 这是问题定义 我想要下表的条件数据验证 Column 1 Column 2 Y Res1 Y Res2 N Res3 N Res4 Y Res5 从上表中 我需要一个单元格下拉列表 使用数据验证 其中
  • 使用 dplyr 的 mutate 函数返回分组数据框中的相对值

    我正在尝试使用 dplyr 的 mutate 函数创建一个新变量 该变量根据 ifelse 语句的值提取现有变量的相对值 这是我想要实现的目标的一个示例 希望能更好地说明问题 id from date fobs to date a 1999
  • Pandas:如何将多个单元格与列表/元组进行比较

    我需要将数据框中的某些列作为一个整体进行比较 例如 df pd DataFrame A 1 1 3 B 4 5 6 Select condition If df A 1 and df B 4 then pick up this row 对于
  • 如何判断 Froyo 中何时发生配置更改?

    在我的应用程序中 我希望播放一个媒体文件 并且在用户旋转屏幕 破坏 Activity 时继续播放 但如果用户移动到不同的 Activity 或另一个 Activity 出现在该 Activity 上 我希望它停止播放 他们按下后退按钮 无论
  • 如何使一种形式保持在另一种形式之上?

    我已经找到了Form TopMost属性 但它将表单置于所有内容之上 包括不属于我的应用程序的内容 我怀疑我在这里遗漏了一些明显的东西 是Form非模式对话框的正确基类 使用对话框窗体的 Form Owner 属性并将其设置为主窗体 在这里
  • 强制将 XML 字符实体放入 XmlDocument 中

    我有一些如下所示的 XML
  • 无法安装测试飞行中的应用程序。此请求有错误

    在装有 iOS 8 3 的 iPhone 5 上 重置所有设置 后 我无法通过 TestFlight 安装测试版 azimov 问题来自 OS 8 3 我们只有 OS 8 3 上的设备才会遇到同样的问题 我个人尝试过重新邀请 更改苹果账户
  • 未捕获的引用错误:React 未定义

    您好 我知道此类问题已被问过很多次 但我无法得到答案 我正在尝试编写一个 React hello world 示例 我只有两个文件 一个是 app jsx 另一个是 homepage jsx 我正在使用 webpack 来捆绑文件 但是当我
  • 当 FlowDocument 放置在带有自定义玻璃的窗口中时,子元素中的 ClearType 会丢失

    因此 新的 WPF 4 文本渲染看起来很棒 但在窗口上启用航空玻璃效果需要将背景更改为透明 这当然会禁用 ClearType 渲染 使用提供的 RenderOptions ClearTypeHint Enabled 允许您指定子元素以从树中