ID2D1RenderTarget::CreateCompatibleRenderTarget (D2D1_SIZE_F,ID2D1BitmapRenderTarget**) 方法 (d2d1.h)

创建与当前呈现目标兼容的中间屏幕外绘制期间使用的位图呈现目标。

语法

HRESULT CreateCompatibleRenderTarget(
  D2D1_SIZE_F             desiredSize,
  ID2D1BitmapRenderTarget **bitmapRenderTarget
);

参数

desiredSize

类型:[in] D2D1_SIZE_F

新呈现目标的所需大小(以与设备无关的像素为单位)。 使用父目标 DPI 根据所需大小计算像素大小。 如果 desiredSize 映射到整数像素大小,则兼容呈现目标的 DPI 与父目标的 DPI 相同。 如果 desiredSize 映射到小数像素大小,则像素大小向上舍入为最接近的整数,并且兼容呈现目标的 DPI 略高于父呈现目标的 DPI。 在所有情况下,坐标 (desiredSize.widthdesiredSize.height) 映射到兼容呈现目标的右下角。

bitmapRenderTarget

类型:[out] ID2D1BitmapRenderTarget**

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

返回值

类型: HRESULT

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

注解

此方法创建的位图呈现目标与 GDI 不兼容。

示例

以下示例使用 CreateCompatibleRenderTarget 方法创建 ID2D1BitmapRenderTarget 并使用它绘制网格模式。 网格模式用作 ID2D1BitmapBrush 的源。

HRESULT DemoApp::CreateGridPatternBrush(
    ID2D1RenderTarget *pRenderTarget,
    ID2D1BitmapBrush **ppBitmapBrush
    )
{
    // Create a compatible render target.
    ID2D1BitmapRenderTarget *pCompatibleRenderTarget = NULL;
    HRESULT hr = pRenderTarget->CreateCompatibleRenderTarget(
        D2D1::SizeF(10.0f, 10.0f),
        &pCompatibleRenderTarget
        );
    if (SUCCEEDED(hr))
    {
        // Draw a pattern.
        ID2D1SolidColorBrush *pGridBrush = NULL;
        hr = pCompatibleRenderTarget->CreateSolidColorBrush(
            D2D1::ColorF(D2D1::ColorF(0.93f, 0.94f, 0.96f, 1.0f)),
            &pGridBrush
            );
        if (SUCCEEDED(hr))
        {
            pCompatibleRenderTarget->BeginDraw();
            pCompatibleRenderTarget->FillRectangle(D2D1::RectF(0.0f, 0.0f, 10.0f, 1.0f), pGridBrush);
            pCompatibleRenderTarget->FillRectangle(D2D1::RectF(0.0f, 0.1f, 1.0f, 10.0f), pGridBrush);
            pCompatibleRenderTarget->EndDraw();

            // Retrieve the bitmap from the render target.
            ID2D1Bitmap *pGridBitmap = NULL;
            hr = pCompatibleRenderTarget->GetBitmap(&pGridBitmap);
            if (SUCCEEDED(hr))
            {
                // Choose the tiling mode for the bitmap brush.
                D2D1_BITMAP_BRUSH_PROPERTIES brushProperties =
                    D2D1::BitmapBrushProperties(D2D1_EXTEND_MODE_WRAP, D2D1_EXTEND_MODE_WRAP);

                // Create the bitmap brush.
                hr = m_pRenderTarget->CreateBitmapBrush(pGridBitmap, brushProperties, ppBitmapBrush);

                pGridBitmap->Release();
            }

            pGridBrush->Release();
        }

        pCompatibleRenderTarget->Release();
    }

    return hr;
}

下面的代码示例使用画笔绘制图案。

// Paint a grid background.
m_pRenderTarget->FillRectangle(
    D2D1::RectF(0.0f, 0.0f, renderTargetSize.width, renderTargetSize.height),
    m_pGridPatternBitmapBrush
    );

此示例中已省略代码。

要求

要求
最低受支持的客户端 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

另请参阅

ID2D1RenderTarget

支持的像素格式和 Alpha 模式