2014-12-06 2 views
2

В настоящее время я изучаю D2D на C++, и я пытаюсь создать заполненный прямоугольник, и кажется, что мой код несколько ошибочен, потому что все, что я заканчиваю, это только край, который заполняется здесь мой код (Initialize вызывается сразу после того, как я создал окно с win32 WinAPI, а затем Draw Функция называется)Direct2d + winapi Rectangle не заполнен полностью

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

, вероятно, очень глупо и небольшая ошибка, но я действительно хотел бы знать, как заполнить полный прямоугольник

ответ

3

Попробуйте позвонить ID2D1RenderTarget::FillRectangle, что «Красками интерьера детали d rectangle ", а не DrawRectangle, который« Рисует контур прямоугольника с указанными размерами и стилем штриха ».