共用方式為


ID2D1RenderTarget::D rawRoundedRectangle (constD2D1_ROUNDED_RECT&,ID2D1Brush*,FLOAT,ID2D1StrokeStyle*) 方法 (d2d1.h)

使用指定的筆劃樣式繪製指定圓角矩形的外框。

語法

void DrawRoundedRectangle(
  const D2D1_ROUNDED_RECT & roundedRect,
  ID2D1Brush                *brush,
  FLOAT                     strokeWidth,
  ID2D1StrokeStyle          *strokeStyle
);

參數

roundedRect

Type: [in] const D2D1_ROUNDED_RECT &

要繪製之圓角矩形的維度,以裝置無關的圖元為單位。

brush

類型:[in] ID2D1Brush*

用來繪製圓角矩形外框的筆刷。

strokeWidth

類型:[in] FLOAT

筆劃的寬度,以裝置無關的圖元為單位。 此值必須大於或等於0.0f。 如果未指定此參數,則預設為1.0f。 筆劃在線條上置中。

strokeStyle

類型:[in, 選擇性] ID2D1StrokeStyle*

圓角矩形筆劃的樣式,或要繪製實心筆劃的 NULL 。 預設值是 NULL

傳回值

備註

如果此方法失敗,此方法不會傳回錯誤碼。 若要判斷繪圖作業是否 (例如 DrawRoundedRectangle) 失敗,請檢查 ID2D1RenderTarget::EndDrawID2D1RenderTarget::Flush 方法傳回的結果。

範例

下列範例會使用 DrawRoundedRectangle 和 FillRoundedRectangle 方法來大綱和填滿圓角矩形。 此範例會產生下圖所示的輸出。

四個圓角矩形的圖例,其中包含不同的筆劃樣式和填滿
//  Called whenever the application needs to display the client
//  window.
HRESULT DrawAndFillRoundedRectangleExample::OnRender()
{
    HRESULT hr;

    // Create the render target and brushes if they
    // don't already exists.
    hr = CreateDeviceResources();

    if (SUCCEEDED(hr))
    {
        // Retrieve the size of the render target.
        D2D1_SIZE_F renderTargetSize = m_pRenderTarget->GetSize();

        m_pRenderTarget->BeginDraw();
        m_pRenderTarget->SetTransform(D2D1::Matrix3x2F::Identity());
        m_pRenderTarget->Clear(D2D1::ColorF(D2D1::ColorF::White));

        // Paint a grid background.
        m_pRenderTarget->FillRectangle(
            D2D1::RectF(0.0f, 0.0f, renderTargetSize.width, renderTargetSize.height),
            m_pGridPatternBitmapBrush
            );

        // Define a rounded rectangle.
        D2D1_ROUNDED_RECT roundedRect = D2D1::RoundedRect(
            D2D1::RectF(20.f, 20.f, 150.f, 100.f),
            10.f,
            10.f
            );

        // Draw the rectangle.
        m_pRenderTarget->DrawRoundedRectangle(roundedRect, m_pBlackBrush, 10.f);

        // Apply a translation transform.
        m_pRenderTarget->SetTransform(D2D1::Matrix3x2F::Translation(200.f, 0.f));

        // Draw the rounded rectangle again, this time with a dashed stroke.
        m_pRenderTarget->DrawRoundedRectangle(roundedRect, m_pBlackBrush, 10.f, m_pStrokeStyle);

        // Apply another translation transform.
        m_pRenderTarget->SetTransform(D2D1::Matrix3x2F::Translation(0.f, 150.f));

        // Draw, then fill the rounded rectangle.
        m_pRenderTarget->DrawRoundedRectangle(roundedRect, m_pBlackBrush, 10.f, m_pStrokeStyle);
        m_pRenderTarget->FillRoundedRectangle(roundedRect, m_pSilverBrush);

        // Apply another translation transform.
        m_pRenderTarget->SetTransform(D2D1::Matrix3x2F::Translation(200.f, 150.f));

        // Fill, then draw the rounded rectangle.
        m_pRenderTarget->FillRoundedRectangle(roundedRect, m_pSilverBrush);
        m_pRenderTarget->DrawRoundedRectangle(roundedRect, m_pBlackBrush, 10.f, m_pStrokeStyle);

        hr = m_pRenderTarget->EndDraw();

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

    return hr;
}

規格需求

需求
最低支援的用戶端 適用於 Windows Vista 的 Windows 7、Windows Vista SP2 和平臺更新 [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2008 R2、Windows Server 2008 SP2 和 Platform Update for Windows Server 2008 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 d2d1.h
程式庫 D2d1.lib
Dll D2d1.dll

另請參閱

D2D1::RoundedRect

如何繪製和填滿基本圖形

ID2D1RenderTarget