【WPF.NET开发】WPF中的版式

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

本文内容

  1. 改进的文本质量和性能
  2. 丰富的版式
  3. 增强的国际文本支持
  4. 增强的字体支持
  5. 新的文本应用程序编程接口 (API)

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

1、改进的文本质量和性能

WPF 中的文本通过 Microsoft ClearType 呈现,该技术增强了文本的清晰度和可读性。 ClearType 是一种由 Microsoft 开发的软件技术,可提高现有 LCD(液晶显示器,如笔记本电脑屏幕、Pocket PC 屏幕和平板显示器)上文本的可读性。 ClearType 使用亚像素呈现技术,通过将字符对齐到像素的小数部分,以更高的保真度显示文本的真实形状。 超高的分辨率增加了文本显示中细节的清晰度,使其更便于长时间阅读。 WPF 中 ClearType 的另一个改进是可以朝 Y 轴方向抗锯齿,使文本字符中平缓曲线的顶端和底端变得平滑。 

【WPF.NET开发】WPF中的版式,WPF.NET 专栏,wpf,.net,c#


采用 ClearType y 向抗锯齿的文本

所有文本呈现管道都可以在 WPF 中实现硬件加速,前提是计算机满足所需硬件的最低要求。 不能使用硬件执行加速的呈现会退回软件呈现。 硬件加速会影响文本呈现管道的所有阶段 - 从存储单个字形、将字形组成字形串、应用效果,到向最终显示输出应用 ClearType 混合算法。 

【WPF.NET开发】WPF中的版式,WPF.NET 专栏,wpf,.net,c#

此外,动画文本(无论是按字符还是按字形进行动画处理)可充分利用由 WPF 启用的图形硬件功能。 因此,可生成平滑的文本动画。

2、丰富的版式

OpenType 字体格式是 TrueType® 字体格式的扩展。 OpenType 字体格式由 Microsoft 和 Adobe 共同开发,可提供多种高级版式功能。 Typography 对象公开了 OpenType 字体的许多高级功能,如样式备用项和花体。 Windows SDK 提供了一组具有丰富特色的 OpenType 字体示例,如 Pericles 和 Pescadero 字体。 

Pericles OpenType 字体包含其他字形,可为标准自行集提供样式备用项。 以下文本显示样式备用字形。

【WPF.NET开发】WPF中的版式,WPF.NET 专栏,wpf,.net,c#

花体是使用精美修饰的装饰性字形,通常与书法相关。 以下文本显示 Pescadero 字体的标准和花体字形。

【WPF.NET开发】WPF中的版式,WPF.NET 专栏,wpf,.net,c#

3、增强的国际文本支持

WPF 通过提供下列功能来提供增强的国际文本支持:

  • 使用自适应测量功能,在所有书写系统中实现自动行距调整。

  • 对国际文本的广泛支持。 

  • 根据不同的语言进行分行、连字和对齐。

4、增强的字体支持

WPF 通过提供下列功能来提供增强的字体支持:

  • 所有文本均采用 Unicode。 字体行为和选择不再需要字符集或代码页。

  • 字体行为与全局设置(如系统区域设置)无关。

  • 将 FontWeight、FontStretch 和 FontStyle 类型分开以定义 FontFamily。 因此其灵活性高于 Win32 编程(在这种编程环境中,使用斜体和粗体的布尔组合来定义字体系列)。

  • 在处理书写方向(横向与纵向)时不受字体名称的影响。

  • 使用复合字体技术,在可移植 XML 文件中链接和回退字体。 使用复合字体可以构造全面的多语言字体。 复合字体还提供一种可避免显示缺失字形的机制。 

  • 使用一组单语言字体,根据复合字体生成国际字体。 在开发多语言字体时,该功能可节省资源成本。

  • 在文档中嵌入复合字体,从而能够提供文档可移植性。 

5、新的文本应用程序编程接口 (API)

WPF 提供了多种文本 API 供开发人员在其应用程序中包括文本时使用。 这些 API 分为以下三类:

  • 布局和用户界面。 图形用户界面 (GUI) 的常见文本控件。

  • 轻量文本绘制。 可直接在对象上绘制文本。

  • 高级文本格式设置。 可实现自定义文本引擎。

布局和用户界面

在最高级别的功能中,文本 API 提供常见的 UI 控件,例如 Label、TextBlock 和 TextBox。 这些控件提供应用程序中的基本 UI 元素,并提供一种表示文本和与文本交互的简便方法。 RichTextBox 和 PasswordBox 等控件可实现更高级或更专业的文本处理。 TextRange、TextSelection 和 TextPointer 等类支持有用的文本操作。 这些 UI 控件提供 FontFamily、FontSize 和 FontStyle 等属性,用于控制呈现文本时使用的字体。

使用位图效果、转换和文本效果

通过 WPF,可以借助位图效果、转换和文本效果等功能,来创建悦目的文本用法。 下面的示例演示了应用于文本的典型类型的投影效果。

【WPF.NET开发】WPF中的版式,WPF.NET 专栏,wpf,.net,c#

下面的示例演示了应用于文本的投影效果和噪音。

【WPF.NET开发】WPF中的版式,WPF.NET 专栏,wpf,.net,c#

下面的示例演示了应用于文本的外发光效果。

【WPF.NET开发】WPF中的版式,WPF.NET 专栏,wpf,.net,c#

以下示例显示了应用于文本的模糊效果。

【WPF.NET开发】WPF中的版式,WPF.NET 专栏,wpf,.net,c#

下面的示例演示沿 X 轴放大 150% 得到第二行文本,沿 Y 轴放大 150% 得到第三行文本。

【WPF.NET开发】WPF中的版式,WPF.NET 专栏,wpf,.net,c#

以下示例演示沿 X 轴倾斜的文本。

【WPF.NET开发】WPF中的版式,WPF.NET 专栏,wpf,.net,c#

TextEffect 对象是一个帮助器对象,使用该对象可将文本作为文本字符串中的一组或多组字符进行处理。 下面的示例演示发生旋转的单个字符。 每个字符都将以 1 秒为间隔单独旋转。

【WPF.NET开发】WPF中的版式,WPF.NET 专栏,wpf,.net,c#

使用流文档

除了常见的 UI 控件,WPF 还提供用于文本呈现的布局控件—FlowDocument 元素。 FlowDocument 元素与 DocumentViewer 元素结合使用,为具有不同布局要求的大量文本提供控件。 布局控件通过其他 UI 控件的 Typography 对象和字体相关属性提供对高级版式的访问。

以下示例演示 FlowDocumentReader 中承载的文本内容,该元素支持搜索、导航、分页和内容缩放。

【WPF.NET开发】WPF中的版式,WPF.NET 专栏,wpf,.net,c#

轻量文本绘制

你可以通过使用 DrawingContext 对象的 DrawText 方法直接在 WPF 对象上绘制文本。 若要使用此方法,请创建一个 FormattedText 对象。 使用该对象可以绘制多行文本,可对文本中的每个字符单独设置格式。 FormattedText 对象的功能包含 Windows API 中 DrawText 标志的许多功能。 另外,FormattedText 对象包含省略号支持(当文本超过其边界时,会显示省略号)之类的功能。 下面的示例演示应用多种格式的文本,其中第二个和第三个单词应用了线性渐变。

【WPF.NET开发】WPF中的版式,WPF.NET 专栏,wpf,.net,c#

可将格式化文本转换为 Geometry 对象,这样便可以创建其他类型的悦目文本。 例如,可基于文本字符串的轮廓创建 Geometry 对象。

【WPF.NET开发】WPF中的版式,WPF.NET 专栏,wpf,.net,c#

以下示例说明了几种通过修改已转换文本的笔划、填充和突出显示来创建悦目的视觉效果的方法。

【WPF.NET开发】WPF中的版式,WPF.NET 专栏,wpf,.net,c#

【WPF.NET开发】WPF中的版式,WPF.NET 专栏,wpf,.net,c#

【WPF.NET开发】WPF中的版式,WPF.NET 专栏,wpf,.net,c#

高级文本格式设置

WPF 是最高级的文本 API,可以通过使用 System.Windows.Media.TextFormatting 命名空间中的 TextFormatter 对象和其他类型来创建自定义的文本布局。 使用 TextFormatter 和关联类可以实现自定义的文本布局,支持为国际文本自定义字符格式、段落样式、换行规则,和其他布局功能。 只有在极少数情况下才需要重写 WPF 文本布局支持的默认实现。 但是,如果要创建文本编辑控件或应用程序,则可能需要非默认的 WPF 实现。

与传统文本 API 不同,TextFormatter 通过一组回叫方法与文本布局客户端交互。 它要求客户端在 TextSource 类的实现中提供这些方法。 下图说明了客户端应用程序和 TextFormatter 之间的文本布局交互。

【WPF.NET开发】WPF中的版式,WPF.NET 专栏,wpf,.net,c#文章来源地址https://www.toymoban.com/news/detail-789697.html

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

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

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

相关文章

  • 【WPF.NET开发】预览事件

    先决条件 预览标记为“已处理”的事件 通过控件解决事件禁止问题 预览事件,也称为隧道事件,是从应用程序根元素向下遍历元素树到引发事件的元素的路由事件。 引发事件的元素在事件数据中报告为Source 。 并非所有事件场景都支持或需要预览事件。 本文介绍了预览事件

    2024年02月03日
    浏览(45)
  • 【WPF.NET开发】流文档

    什么是流文档? 流文档类型 创建流内容 与流相关的类 内容架构 自定义文本 流文档旨在优化查看和可读性。 流文档根据运行时变量(例如,窗口大小、设备分辨率和可选的用户首选项)来动态调整和重新排列内容,而不是设置为一个预定义的布局。 此外,流文档还提供一

    2024年01月17日
    浏览(38)
  • 【WPF.NET开发】弱事件模式

    先决条件 为什么要实现弱事件模式? 应该由谁实现弱事件模式? 如何实现弱事件模式 在应用程序中,附加到事件源的处理程序可能不会与将处理程序附加到源的侦听器对象一同销毁。 这种情况下会导致内存泄漏。 Windows Presentation Foundation (WPF) 引入了可用于解决此问题的设

    2024年02月03日
    浏览(36)
  • 【WPF.NET开发】OpenType字体

    OpenType 字体格式 变量 大写字母 连字 花体 备用项 数字样式 版式类 本主题概述了 Windows Presentation Foundation (WPF) 中 OpenType 字体技术的一些主要功能。 OpenType 字体格式是 TrueType® 字体格式的扩展,增加了对 PostScript 字体数据的支持。 OpenType 字体格式由 Microsoft 和 Adobe Corporatio

    2024年01月16日
    浏览(40)
  • .NET 8 中的 WPF File Dialog 改进

    作者:Dipesh Kumar 排版:Alan Wang 我们很高兴宣布从 .NET 8 Preview 7 开始,对 WPF 中的通用文件对话框 API 进行了一系列新的改进。其中包括迄今为止存储库中投票最多的 API 建议 – 允许用户选择文件夹的 OpenFolderDialog 控件 – 以及文件对话框上支持新的用户场景的几个新属性,例

    2024年02月07日
    浏览(37)
  • VisualStudio[WPF/.NET]基于CommunityToolkit.Mvvm架构开发

    项目模板选择如下: 暂时随机填一个目标框架,待会改: 双击“解决方案资源管理器”中项目CU-APP, 打开项目工程文件CU-APP.csproj, 修改目标框架 TargetFramework 为.net framework 4.7.2 ;  C#语言版本 LangVersion 为  9.0  \\\"工具\\\" - \\\"NuGet包管理器\\\",“管理解决方案的NuGet程序包(N)”,  或者,

    2024年02月07日
    浏览(38)
  • .NET6: 开发基于WPF的摩登三维工业软件 (7)

    Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 做为一个摩登的工业软件,提供可编程的脚本能力是必不可少的能力。脚本既可以方便用户进行二次开发,也对方便对程序进行自动化测试。本文将结合

    2024年02月05日
    浏览(43)
  • .net wpf程序 移花接木

    最近在研究C# .net桌面程序。非常有趣 软件是国外作者写的 公司要求修改翻译 从最初的开源变成闭源再到加壳. 一路让我这个小小的职员好蛋疼. 软件是VS2015 C# WPF 程序 在不脱壳的情况下 实现挂钩类托管函数 遍历WPF控件汉化 首先通过各种手段脱壳目标程序,哪怕是不能运行

    2024年02月07日
    浏览(35)
  • WPF .NET 7.0学习整理(一)

    参照文档进行不系统的整理,看到那写到那O.o DependencyProperty:使用专有字段支持属性的标准模式的替代方法。 DependencyObject:定义了可以注册和拥有依赖属性的基类。 属性及其支持性 DependencyProperty 字段的命名约定非常重要。 字段总是与属性同名,但其后面追加了 Property 后

    2024年02月09日
    浏览(34)
  • [.NET/WPF] CommunityToolkit.Mvvm 异步指令

    我们在开发中, 经常会有这样的需求: 点击按钮后, 进行一些耗时的工作 工作进行时, 按钮不可再次被点击 工作进行时, 会显示进度条, 或者 “加载中” 的动画 CommunityToolkit.Mvvm 中的 RelayCommand 除了支持最简单的同步方法, 还支持以 Task 作为返回值的异步方法, 当我们为这样的异

    2024年02月12日
    浏览(41)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包