0

我试图了解 Office 2013 是如何将内容绘制到屏幕上的部分。我的发现到目前为止:

  1. Office 正在创建基于 Wic 的位图,使用CreateWicBitmapRenderTarget.
  2. 使用此渲染目标,Office 使用各种绘图方法。它按预期用 BeginDraw/EndDraw 包装这些调用。
  3. Office 使用DrawGlyphRun 方法在Wic 位图上绘制文档文本(即DrawGlyphRun 的This 指针是CreateWicBitmapRenderTarget 返回的那个)。

在这一点上,我很困惑 Office 如何继续。所以我的问题是:

将基于 Wic 的渲染目标复制到屏幕的各种可能方法是什么?

我很确定最后,Office 正在使用交换链(可能CreateSwapChain在 Windows 7 和CreateSwapChainForHwndWindows 8 上创建)。我正在逐步了解各种“可疑”功能,例如CreateBitmapFromWicBitmapand CreateBitmapFromDxgiSurface) - 但我不了解 API 调用的完整链。

编辑(对 MooseBoys 的回答):这不是将像素放在屏幕上的一般问题。像素已经在一个 RenderTarget(使用 CreateWicBitmapRenderTarget 创建的渲染目标,然后使用 BeginDraw/DrawGlyphRun/EndDraw 绘制),我现在想将这些像素移动到另一个 RenderTarget(实际屏幕上的渲染目标)。在 GDC 世界中,我会寻找类似 BitBlt 的东西,将像素从一个 hdc 移动到另一个 hdc。我想知道 D2D 世界中的协议是什么。

4

0 回答 0