ID2D1DeviceContext::CreateImageBrush (ID2D1Image*,constD2D1_IMAGE_BRUSH_PROPERTIES&,ID2D1ImageBrush**) 方法 (d2d1_1.h)
建立影像筆刷。 輸入影像可以是任何類型的影像,包括位圖、效果或命令清單。
語法
HRESULT CreateImageBrush(
[in] ID2D1Image *image,
[in, ref] const D2D1_IMAGE_BRUSH_PROPERTIES & imageBrushProperties,
[out] ID2D1ImageBrush **imageBrush
);
參數
[in] image
類型: ID2D1Image*
要作為影像筆刷來源的影像。
[in, ref] imageBrushProperties
類型: const D2D1_IMAGE_BRUSH_PROPERTIES
影像筆刷特有的屬性。
[out] imageBrush
類型: ID2D1ImageBrush**
當這個方法傳回時,會包含輸入矩形指標的位址。
傳回值
類型: HRESULT
方法會傳回 HRESULT。 可能的值包括 (但不限於) 下表中的這些值。
HRESULT | 描述 |
---|---|
S_OK | 未發生任何錯誤。 |
E_OUTOFMEMORY | Direct2D 無法配置足夠的記憶體來完成呼叫。 |
E_INVALIDARG | 無效的值已傳遞至 方法。 |
備註
影像筆刷可用來填滿任意幾何、不透明度遮罩或文字。
此範例說明使用影像筆刷繪製矩形。
HRESULT
CreatePatternBrush(
__in ID2D1DeviceContext *pDeviceContext,
__deref_out ID2D1ImageBrush **ppImageBrush
)
{
HRESULT hr = S_OK;
ID2D1Image *pOldTarget = NULL;
pDeviceContext->GetTarget(&pOldTarget);
ID2D1CommandList *pCommandList = NULL;
hr = pDeviceContext->CreateCommandList(&pCommandList);
if (SUCCEEDED(hr))
{
pDeviceContext->SetTarget(pCommandList);
hr = RenderPatternToCommandList(pDeviceContext);
}
pDeviceContext->SetTarget(pOldTarget);
ID2D1ImageBrush *pImageBrush = NULL;
if (SUCCEEDED(hr))
{
hr = pDeviceContext->CreateImageBrush(
pCommandList,
D2D1::ImageBrushProperties(
D2D1::RectF(198, 298, 370, 470),
D2D1_EXTEND_MODE_WRAP,
D2D1_EXTEND_MODE_WRAP,
D2D1_INTERPOLATION_MODE_LINEAR
),
&pImageBrush
);
}
// Fill a rectangle with the image brush.
if (SUCCEEDED(hr))
{
pDeviceContext->FillRectangle(
D2D1::RectF(0, 0, 100, 100), pImageBrush);
}
SafeRelease(&pImageBrush);
SafeRelease(&pCommandList);
SafeRelease(&pOldTarget);
return hr;
}
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 適用於 Windows 7 的 Windows 8 和平臺更新 [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | 適用於 Windows Server 2008 R2 的 Windows Server 2012 和平臺更新 [傳統型應用程式 |UWP 應用程式] |
目標平台 | Windows |
標頭 | d2d1_1.h |
Dll | D2d1.dll |
另請參閱
ID2D1DeviceContext::CreateCommandList
ID2D1DeviceContext::CreateEffect