ID2D1RenderTarget::CreateSharedBitmap 方法 (d2d1.h)

创建一个 ID2D1Bitmap ,其数据与其他资源共享。

语法

HRESULT CreateSharedBitmap(
                 REFIID                       riid,
  [in, out]      void                         *data,
  [in, optional] const D2D1_BITMAP_PROPERTIES *bitmapProperties,
  [out]          ID2D1Bitmap                  **bitmap
);

参数

riid

类型: REFIID

提供源数据的 对象的接口 ID。

[in, out] data

类型: void*

包含要与新 ID2D1Bitmap 共享的数据的 ID2D1Bitmap、IDXGISurfaceIWICBitmapLock 有关详细信息,请参见“备注”部分。

[in, optional] bitmapProperties

类型: D2D1_BITMAP_PROPERTIES*

要创建的位图的像素格式和 DPI。 像素格式的DXGI_FORMAT部分必须与数据DXGI_FORMAT匹配,否则 方法将失败,但 alpha 模式不必匹配。 若要防止不匹配,可以传递 NULL 或从 D2D1::P ixelFormat 帮助程序函数获取的值。 DPI 设置不必与 数据的那些设置相匹配。 如果 dpiXdpiY 均为 0.0f,则使用呈现目标的 DPI。

[out] bitmap

类型: ID2D1Bitmap**

此方法返回时,包含指向新位图的指针的地址。 此参数未经初始化即被传递。

返回值

类型: HRESULT

如果该方法成功,则返回 S_OK。 否则,它将返回 HRESULT 错误代码。

注解

CreateSharedBitmap 方法可用于高效重用位图数据,还可用于提供与 Direct3D 的互操作性。

共享 ID2D1Bitmap

通过传递由资源兼容的呈现器目标创建的 ID2D1Bitmap ,可以与该呈现器目标共享位图;原始 ID2D1Bitmap 和此方法创建的新 ID2D1Bitmap 都将指向相同的位图数据。 有关何时可以共享呈现目标资源的详细信息,请参阅 资源概述的共享呈现目标资源部分。

还可以使用此方法重新解释现有位图的数据,并指定新的 DPI 或 alpha 模式。 例如,对于位图图集, ID2D1Bitmap 可能包含多个子图像,其中每个子图像应使用不同的 D2D1_ALPHA_MODE 呈现 (D2D1_ALPHA_MODE_PREMULTIPLIEDD2D1_ALPHA_MODE_IGNORE) 。 可以使用 CreateSharedBitmap 方法使用所需的 alpha 模式重新解释位图,而无需将位图的单独副本加载到内存中。

共享 IDXGISurface

使用 DXGI 表面呈现目标 (由 CreateDxgiSurfaceRenderTarget 方法) 创建的 ID2D1RenderTarget 对象时,可以将 IDXGISurface 图面传递到 CreateSharedBitmap 方法,以便与 Direct3D 共享视频内存,并将 Direct3D 内容作为 ID2D1Bitmap 进行操作。 如 资源概述中所述,呈现目标和 IDXGISurface 必须使用相同的 Direct3D 设备。

另请注意, IDXGISurface 必须使用支持的像素格式和 Alpha 模式中所述的 受支持的像素格式和 alpha 模式之一

有关与 Direct3D 的互操作性的详细信息,请参阅 Direct2D 和 Direct3D 互操作性概述

共享 IWICBitmapLock

IWICBitmapLock 存储 WIC 位图的内容,并保护它免受同时访问。 通过将 IWICBitmapLock 传递给 CreateSharedBitmap 方法,可以创建指向 IWICBitmapLock 中已存储的位图数据的 ID2D1Bitmap

若要将 IWICBitmapLockCreateSharedBitmap 方法配合使用,呈现器目标必须使用软件呈现。 若要强制呈现目标使用软件呈现,请将 设置为 D2D1_RENDER_TARGET_TYPE_SOFTWARE用于创建呈现目标的 D2D1_RENDER_TARGET_PROPERTIES 结构的类型字段。 若要检查现有呈现目标是否使用软件呈现,请使用 IsSupported 方法。

要求

要求
最低受支持的客户端 Windows 7、带 SP2 的 Windows Vista 和适用于 Windows Vista 的平台更新 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows Server 2008 R2、Windows Server 2008 SP2 和适用于 Windows Server 2008 的平台更新 [桌面应用 |UWP 应用]
目标平台 Windows
标头 d2d1.h
Library D2d1.lib
DLL D2d1.dll

另请参阅

Direct2D 和 Direct3D 互操作性概述

ID2D1RenderTarget

IDXGISurface

IWICBitmapLock

资源概述

支持的像素格式和 Alpha 模式