共用方式為


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

提供源數據的 物件的介面識別碼。

[in, out] data

類型: void*

ID2D1BitmapIDXGISurfaceIWICBitmapLock,其中包含要與新 ID2D1Bitmap 共享的數據。 如需詳細資訊,請參閱<備註>一節。

[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 模式。 例如,在位圖 atlas 的情況下,ID2D1Bitmap 可能包含多個子影像,每個子影像都應該使用不同的D2D1_ALPHA_MODE轉譯 (D2D1_ALPHA_MODE_PREMULTIPLIED或D2D1_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 方法,您可以建立 ID2D1Bitmap ,指向 IWICBitmapLock 中已儲存的位圖數據。

若要搭配 CreateSharedBitmap 方法使用 IWICBitmapLock,轉譯目標必須使用軟體轉譯。 若要強制轉譯目標使用軟體轉譯,請將 設定為 D2D1_RENDER_TARGET_TYPE_SOFTWARE您用來建立轉譯目標的D2D1_RENDER_TARGET_PROPERTIES結構類型字段。 若要檢查現有的轉譯目標是否使用軟體轉譯,請使用 IsSupported 方法。

規格需求

需求
最低支援的用戶端 適用於 Windows Vista 的 Windows 7、Windows Vista SP2 和平臺更新 [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2008 R2、Windows Server 2008 SP2 和 Platform Update for Windows Server 2008 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 d2d1.h
程式庫 D2d1.lib
Dll D2d1.dll

另請參閱

Direct2D 和 Direct3D 互通性概觀

ID2D1RenderTarget

IDXGISurface

IWICBitmapLock

資源概觀

支援的像素格式和 Alpha 模式