Direct2d + winapi矩形未完全填充

时间:2014-12-06 18:02:53

标签: c++ winapi directx direct2d drawrectangle

我目前正在学习C ++中的D2D,我正在尝试创建一个填充的矩形,看起来我的代码有些错误,因为我最终只是边缘被填满了 这是我的代码(在我使用win32 winapi创建Window然后调用Draw函数后立即调用Initialize)

bool GraphicClass::Initialize()
{
    HRESULT result;
    //Initialize D2DFactory
    result = D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &_d2dFactory);
    if (FAILED(result))
    {
        return false;
    }
    D2D1_SIZE_U size = D2D1::SizeU(
        _rc.right - _rc.left,
        _rc.bottom - _rc.top
        );
    //Initialize D2DRenderTarget
    HRESULT hr = _d2dFactory->CreateHwndRenderTarget(
        D2D1::RenderTargetProperties(),
        D2D1::HwndRenderTargetProperties(
            _hwnd,size
        ),
        &_d2dRenderTarget
        );
    if (FAILED(result))
    {
        return false;
    }
    else
    {
        _d2dRenderTarget->CreateSolidColorBrush(
            D2D1::ColorF(D2D1::ColorF::Blue),
            &_blueBrush
            );
    }
    return true;
}

bool GraphicClass::DrawD2D()
{
    HRESULT result;
    _d2dRenderTarget->BeginDraw();
    _d2dRenderTarget->DrawRectangle(
        D2D1::RectF(
        _rc.left + 100.0f,
        _rc.top + 100.0f,
        _rc.right - 100.0f,
        _rc.bottom - 100.0f),
        _blueBrush);
    result = _d2dRenderTarget->EndDraw();
    if (FAILED(result))
    {
        return false;
    }
    return true;
}

可能是一个非常愚蠢和小错误,但我真的想知道如何填充整个矩形

1 个答案:

答案 0 :(得分:3)

尝试调用ID2D1RenderTarget::FillRectangle,其中“绘制指定矩形的内部”,而不是DrawRectangle,“绘制具有指定尺寸和笔触样式的矩形的轮廓”。