# 零、简介

这本书介绍了 Direct2D 和 Direct3D 的一些功能。Direct2D 和 Direct3D 是 DirectX 的图形渲染组件。它是关于利用图形卡和 DirectX 来有效地表示数据。它面向已经熟悉 C++(托管和非托管)和 Visual Studio 2012 Express 的程序员。我们将使用为 Windows 8 应用程序开发设计的 Visual Studio 版本，而不是桌面版本。桌面版本是为构建标准的 Windows 窗体应用程序而设计的，而 Windows 8 版本是为 Windows Store 应用程序而设计的。这本书介绍了使用 Direct2D 和 Direct3D 在 Windows 8 和 Windows RT 平台上渲染矢量图形和可视化不同类型数据的方法。它不是对这些主题的深入讨论；有关更多信息，请参考 Microsoft 相应的 MSDN 库页面以及您正在为其编程的图形硬件的规范。

这本书提供了 Direct2D 和 Direct3D 的一般介绍。它是从将数据呈现为节点和线的角度编写的，但是所呈现的信息对于任何需要使用 DirectX 进行高效呈现的应用程序都很有用。在本书的最初几章中，我们将开发一个小型但可扩展的图表系统，该系统可以适用于其他项目或整合到现有项目中。我们将研究制图应用程序的一些常见需求，例如检测指针是否靠近节点，以及打印 Direct2D。

为了保持尽可能通用，我在示例中生成了随机数据。在实际情况下，这些数据将从某个数据源加载。我还将基于 Visual Studio 2012 提供的标准项目模板，而不是专注于样板代码。对于任何希望熟悉该应用编程接口的程序员来说，冗长的 DirectX 样板代码都是一个障碍。谢天谢地，Visual Studio 2012 提供的模板为我们编写了所有的样板代码。我们很大程度上认为这是理所当然的，并在样板代码中的选项出现时检查它们。

本书中的代码是为运行 Windows 8 的台式电脑和运行 Windows RT 的平板电脑设计的。它已被格式化以适合本文档的页面。这意味着它很难阅读，如果为了测试而复制粘贴，应该重新格式化。