METODE ID2D1RenderTarget::D rawRectangle(constD2D1_RECT_F*,ID2D1Brush*,FLOAT,ID2D1StrokeStyle*) (d2d1.h)

Menggambar kerangka persegi panjang yang memiliki dimensi dan gaya goresan yang ditentukan.

Sintaks

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

Parameter

rect

Jenis: [in] const D2D1_RECT_F*

Dimensi persegi panjang yang akan digambar, dalam piksel independen perangkat.

brush

Jenis: [in] ID2D1Brush*

Kuas yang digunakan untuk melukis goresan persegi panjang.

strokeWidth

Jenis: [in] FLOAT

Lebar goresan, dalam piksel independen perangkat. Nilai harus lebih besar dari atau sama dengan 0,0f. Jika parameter ini tidak ditentukan, parameter defaultnya adalah 1.0f. Stroke berpusat pada garis.

strokeStyle

Jenis: [in, opsional] ID2D1StrokeStyle*

Gaya stroke untuk melukis, atau NULL untuk melukis goresan padat.

Nilai kembali

Tidak ada

Keterangan

Ketika metode ini gagal, metode ini tidak mengembalikan kode kesalahan. Untuk menentukan apakah metode menggambar (seperti DrawRectangle) gagal, periksa hasil yang dikembalikan oleh metode ID2D1RenderTarget::EndDraw atau ID2D1RenderTarget::Flush .

Contoh

Contoh berikut menggunakan ID2D1HwndRenderTarget untuk menggambar dan mengisi beberapa persegi panjang. Contoh ini menghasilkan output yang ditunjukkan dalam ilustrasi berikut.

Ilustrasi dua persegi panjang pada latar belakang kisi
// 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;
}

Untuk tutorial terkait, lihat Membuat aplikasi Direct2D sederhana.

Persyaratan

Persyaratan Nilai
Target Platform Windows
Header d2d1.h (termasuk D2d1.h)
Pustaka D2d1.lib
DLL D2d1.dll

Lihat juga

Membuat aplikasi Direct2D sederhana

Cara Menggambar dan Mengisi Bentuk Dasar

ID2D1RenderTarget