2

我目前正在用 C++ 学习 D2D,我正在尝试创建一个填充的矩形,我的代码似乎有些错误,因为我最终只是边缘被填充,这里是我的代码(在我创建后立即调用初始化带有win32 winapi的窗口,然后调用Draw函数)

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;
}

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

4

1 回答 1

3

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

于 2014-12-06T18:12:33.717 回答