Поделиться через


Метод 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*

ID2D1Bitmap, IDXGISurface или IWICBitmapLock, содержащий данные для совместного использования с новым ID2D1Bitmap. Дополнительные сведения см. в разделе «Примечания».

[in, optional] bitmapProperties

Тип: D2D1_BITMAP_PROPERTIES*

Формат пикселей и DPI растрового изображения для создания . DXGI_FORMAT часть формата пикселей должна соответствовать DXGI_FORMATданных, иначе метод завершится ошибкой, но альфа-режимы не должны совпадать. Чтобы предотвратить несоответствие, можно передать значение NULL или значение, полученное из вспомогательной функции D2D1::P ixelFormat . Параметры DPI не обязательно должны соответствовать параметрам данных. Если и dpiX , и dpiY имеют значение 0,0f, используется значение DPI целевого объекта отрисовки.

[out] bitmap

Тип: ID2D1Bitmap**

При возврате этим методом содержит адрес указателя на новое растровое изображение. Этот параметр передается неинициализированным.

Возвращаемое значение

Тип: HRESULT

Если этот метод завершается успешно, он возвращает S_OK. В противном случае возвращается код ошибки HRESULT .

Комментарии

Метод CreateSharedBitmap полезен для эффективного повторного использования данных растрового изображения, а также может использоваться для обеспечения взаимодействия с Direct3D.

Совместное использование ID2D1Bitmap

Передав id2D1Bitmap , созданный целевым объектом отрисовки, совместимым с ресурсами, вы можете поделиться растровым изображением с этим целевым объектом отрисовки; исходный ID2D1Bitmap и новый ID2D1Bitmap , созданный этим методом, будут указывать на одни и те же данные растрового рисунка. Дополнительные сведения о том, когда можно совместно использовать целевые ресурсы отрисовки, см. в разделе Общий доступ к целевым ресурсам рендеринга в обзоре ресурсов.

Этот метод также можно использовать для повторного интерпретации данных существующего растрового изображения и указания нового режима DPI или альфа-канала. Например, в случае с точечным атласом ID2D1Bitmap может содержать несколько вложенных изображений, каждое из которых должно быть отрисовано с помощью разных D2D1_ALPHA_MODE (D2D1_ALPHA_MODE_PREMULTIPLIED или D2D1_ALPHA_MODE_IGNORE). Метод CreateSharedBitmap можно использовать для повторной интерпретации растрового изображения с помощью требуемого альфа-режима без загрузки отдельной копии растрового рисунка в память.

Совместное использование IDXGISurface

При использовании целевого объекта отрисовки поверхности DXGI (объекта ID2D1RenderTarget , созданного методом CreateDxgiSurfaceRenderTarget ) можно передать поверхность IDXGISurface методу CreateSharedBitmap , чтобы совместно использовать видеопамять с Direct3D и управлять содержимым Direct3D как ID2D1Bitmap. Как описано в обзоре ресурсов, целевой объект отрисовки и IDXGISurface должны использовать одно и то же устройство Direct3D.

Обратите также внимание, что IDXGISurface должен использовать один из поддерживаемых форматов пикселей и альфа-режимов, описанных в разделах Поддерживаемые форматы пикселей и Альфа-режимы.

Дополнительные сведения о взаимодействии с Direct3D см. в статье Общие сведения о взаимодействии Direct2D и Direct3D.

Предоставление общего доступа к IWICBitmapLock

IWICBitmapLock хранит содержимое растрового изображения WIC и защищает его от одновременных обращений. Передав IWICBitmapLock в метод CreateSharedBitmap , можно создать ID2D1Bitmap , указывающий на данные растрового изображения, уже хранящиеся в IWICBitmapLock.

Чтобы использовать IWICBitmapLock с методом CreateSharedBitmap , целевой объект отрисовки должен использовать программную отрисовку. Чтобы принудить целевой объект отрисовки использовать программную отрисовку, задайте значение D2D1_RENDER_TARGET_TYPE_SOFTWARE поле типаструктуры D2D1_RENDER_TARGET_PROPERTIES , используемой для создания целевого объекта отрисовки. Чтобы проверка, использует ли существующий целевой объект отрисовки программное обеспечение, используйте метод IsSupported.

Требования

Требование Значение
Минимальная версия клиента Windows 7, Windows Vista с пакетом обновления 2 (SP2) и обновление платформы для Windows Vista [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2008 R2, Windows Server 2008 с пакетом обновления 2 (SP2) и Обновление платформы для Windows Server 2008 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header d2d1.h
Библиотека D2d1.lib
DLL D2d1.dll

См. также раздел

Общие сведения о взаимодействии Direct2D и Direct3D

ID2D1RenderTarget

IDXGISurface

IWICBitmapLock

Обзор ресурсов

Поддерживаемые форматы пикселей и режимы альфа-канала