Поделиться через


Метод ID2D1RenderTarget::D rawRectangle(constD2D1_RECT_F*,ID2D1Brush*,FLOAT,ID2D1StrokeStyle*) (d2d1.h)

Рисует контур прямоугольника с указанными размерами и стилем росчерка.

Синтаксис

void DrawRectangle(
  const D2D1_RECT_F *rect,
  ID2D1Brush        *brush,
  FLOAT             strokeWidth,
  ID2D1StrokeStyle  *strokeStyle
);

Параметры

rect

Тип: [in] const D2D1_RECT_F*

Размеры прямоугольника для рисования в аппаратно-независимых пикселях.

brush

Тип: [in] ID2D1Brush*

Кисть, используемая для рисования росчерка прямоугольника.

strokeWidth

Тип: [in] FLOAT

Ширина штриха в аппаратно-независимых пикселях. Значение должно быть больше или равно 0,0f. Если этот параметр не указан, по умолчанию используется значение 1.0f. Штрих находится по центру линии.

strokeStyle

Тип: [in, необязательный] ID2D1StrokeStyle*

Стиль росчерка для рисования или NULL для рисования сплошного росчерка.

Возвращаемое значение

None

Remarks

Если этот метод завершается сбоем, он не возвращает код ошибки. Чтобы определить, произошел ли сбой метода рисования (например, DrawRectangle), проверка результат, возвращаемый методом ID2D1RenderTarget::EndDraw или ID2D1RenderTarget::Flush.

Примеры

В следующем примере используется ID2D1HwndRenderTarget для рисования и заполнения нескольких прямоугольников. В этом примере показано, как показано на следующем рисунке.

Иллюстрация двух прямоугольников на фоне сетки
// This method discards device-specific
// resources if the Direct3D device disappears during execution and
// recreates the resources the next time it's invoked.
HRESULT DemoApp::OnRender()
{
    HRESULT hr = S_OK;

    hr = CreateDeviceResources();

    if (SUCCEEDED(hr))
    {
        m_pRenderTarget->BeginDraw();

        m_pRenderTarget->SetTransform(D2D1::Matrix3x2F::Identity());

        m_pRenderTarget->Clear(D2D1::ColorF(D2D1::ColorF::White));

        D2D1_SIZE_F rtSize = m_pRenderTarget->GetSize();

        // Draw a grid background.
        int width = static_cast<int>(rtSize.width);
        int height = static_cast<int>(rtSize.height);

        for (int x = 0; x < width; x += 10)
        {
            m_pRenderTarget->DrawLine(
                D2D1::Point2F(static_cast<FLOAT>(x), 0.0f),
                D2D1::Point2F(static_cast<FLOAT>(x), rtSize.height),
                m_pLightSlateGrayBrush,
                0.5f
                );
        }

        for (int y = 0; y < height; y += 10)
        {
            m_pRenderTarget->DrawLine(
                D2D1::Point2F(0.0f, static_cast<FLOAT>(y)),
                D2D1::Point2F(rtSize.width, static_cast<FLOAT>(y)),
                m_pLightSlateGrayBrush,
                0.5f
                );
        }

        // Draw two rectangles.
        D2D1_RECT_F rectangle1 = D2D1::RectF(
            rtSize.width/2 - 50.0f,
            rtSize.height/2 - 50.0f,
            rtSize.width/2 + 50.0f,
            rtSize.height/2 + 50.0f
            );

        D2D1_RECT_F rectangle2 = D2D1::RectF(
            rtSize.width/2 - 100.0f,
            rtSize.height/2 - 100.0f,
            rtSize.width/2 + 100.0f,
            rtSize.height/2 + 100.0f
            );


        // Draw a filled rectangle.
        m_pRenderTarget->FillRectangle(&rectangle1, m_pLightSlateGrayBrush);

        // Draw the outline of a rectangle.
        m_pRenderTarget->DrawRectangle(&rectangle2, m_pCornflowerBlueBrush);

        hr = m_pRenderTarget->EndDraw();
    }

    if (hr == D2DERR_RECREATE_TARGET)
    {
        hr = S_OK;
        DiscardDeviceResources();
    }

    return hr;
}

Связанное руководство см. в статье Создание простого приложения Direct2D.

Требования

Требование Значение
Целевая платформа Windows
Header d2d1.h (включая D2d1.h)
Библиотека D2d1.lib
DLL D2d1.dll

См. также раздел

Создание простого приложения Direct2D

Рисование и заполнение базовой фигуры

ID2D1RenderTarget