В настоящее время я изучаю D2D на C ++, и я пытаюсь создать заполненный прямоугольник, и кажется, что мой код несколько неправильный, потому что все, что я заканчиваю, это только заполнение Edge
вот мой код (инициализация вызывается сразу после того, как я создал окно с 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;
}
вероятно, действительно глупая и маленькая ошибка, но я действительно хотел бы знать, как заполнить полный прямоугольник
Попробуйте позвонить ID2D1RenderTarget::FillRectangle
, который «рисует внутреннюю часть указанного прямоугольника» вместо DrawRectangle
, which «Рисует контур прямоугольника с указанными размерами и стилем обводки».