ID2D1Bitmap1
COM公式ドキュメント
ID2D1DeviceContext のサーフェスとして使用したり、システムメモリにマップしたりできるビットマップを表します。追加のカラーコンテキスト情報を含めることもできます。
解説(Remarks)
ID2D1Bitmap オブジェクトの作成
ID2D1Bitmap オブジェクトを作成するには、次のいずれかのメソッドを使用します。Direct2D ビットマップがサポートするピクセル形式については、Supported Pixel Formats and Alpha Modes を参照してください。
ID2D1Bitmap はデバイス依存のリソースです。アプリケーションは、ビットマップを使用するレンダーターゲットを初期化した後にビットマップを作成し、レンダーターゲットの再作成が必要になったときは常にビットマップも再作成する必要があります。(リソースの詳細については、Resources Overview を参照してください。)
メソッド 5
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
ビットマップに関連付けられたカラーコンテキスト情報を取得します。
| colorContext | ID2D1ColorContext** | out | このメソッドが返るとき、ビットマップに関連付けられたカラーコンテキストインターフェースへのポインターのアドレスが格納されます。 |
解説(Remarks)
カラーコンテキストを指定せずにビットマップが作成された場合、返されるコンテキストは NULL になります。
ビットマップの作成時に使用されたオプションを取得します。
戻り値
このメソッドは、使用されたオプションを返します。
ビットマップの作成時に指定されたサーフェス、またはビットマップの作成時に作成された既定のサーフェスを取得します。
| dxgiSurface | IDXGISurface** | out | ビットマップの基になる DXGI サーフェスです。 |
戻り値
型: HRESULT
このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。
| HRESULT | 説明 |
|---|---|
| S_OK | エラーは発生しませんでした。 |
| D2DERR_BITMAP_BOUND_AS_TARGET | 現在ターゲットビットマップとしてバインドされているビットマップには描画できません。 |
解説(Remarks)
使用するビットマップは、DXGI サーフェスレンダーターゲット、派生レンダーターゲット、または ID2D1Device から作成されたデバイスコンテキストから作成されている必要があります。
返されるサーフェスは、Microsoft Direct3D や、共有サーフェスと相互運用できるその他の API で使用できます。アプリケーションは、そのサーフェスが、このコンテキストで使用される Direct3D デバイス上で使用可能であることを推移的に保証する必要があります。たとえば、そのサーフェスを Direct2D で使用する場合、Direct2D レンダーターゲットは ID2D1Factory::CreateDxgiSurfaceRenderTarget を通じて作成されているか、同じデバイス上で作成されたデバイスコンテキスト上に作成されている必要があります。
指定したビットマップをメモリにマップします。
| options | D2D1_MAP_OPTIONS | in | ビットマップをメモリにマップする際に使用するオプションです。 |
| mappedRect | D2D1_MAPPED_RECT* | out | このメソッドが返るとき、メモリにマップされた矩形への参照が格納されます。 |
戻り値
型: HRESULT
このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。
| HRESULT | 説明 |
|---|---|
| S_OK | エラーは発生しませんでした。 |
| E_INVALIDARG | 1 つ以上の引数が無効です。 |
| D3DERR_DEVICELOST | デバイスが失われましたが、現時点ではリセットできません。 |
解説(Remarks)
ビットマップのメモリへのマップを解除します。
戻り値
型: HRESULT
このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。
| HRESULT | 説明 |
|---|---|
| S_OK | エラーは発生しませんでした。 |
| E_INVALIDARG | 1 つ以上の引数が無効です。 |
| E_POINTER | ポインターが無効です。 |
解説(Remarks)
Map の呼び出しから返されたメモリは、この時点で無効となり、オペレーティングシステムによって再利用されたり、他の目的で使用されたりする可能性があります。
ビットマップは、事前にマップされている必要があります。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ID2D1Bitmap1 "{A898A84C-3873-4588-B08B-EBBF978DF041}" #usecom global ID2D1Bitmap1 IID_ID2D1Bitmap1 "{}" #comfunc global ID2D1Bitmap1_GetColorContext 11 sptr #comfunc global ID2D1Bitmap1_GetOptions 12 #comfunc global ID2D1Bitmap1_GetSurface 13 sptr #comfunc global ID2D1Bitmap1_Map 14 int,var #comfunc global ID2D1Bitmap1_Unmap 15 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_ID2D1Bitmap1 "{A898A84C-3873-4588-B08B-EBBF978DF041}" #usecom global ID2D1Bitmap1 IID_ID2D1Bitmap1 "{}" #comfunc global ID2D1Bitmap1_GetColorContext 11 sptr #comfunc global ID2D1Bitmap1_GetOptions 12 #comfunc global ID2D1Bitmap1_GetSurface 13 sptr #comfunc global ID2D1Bitmap1_Map 14 int,sptr #comfunc global ID2D1Bitmap1_Unmap 15 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。