Partager via


MÉTHODE ID2D1RenderTarget ::D rawRectangle(constD2D1_RECT_F*,ID2D1Brush*,FLOAT,ID2D1StrokeStyle*) (d2d1.h)

Dessine le contour d’un rectangle qui a les dimensions et le style de trait spécifiés.

Syntaxe

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

Paramètres

rect

Type : [in] const D2D1_RECT_F*

Dimensions du rectangle à dessiner, en pixels indépendants de l’appareil.

brush

Type : [in] ID2D1Brush*

Pinceau utilisé pour peindre le trait du rectangle.

strokeWidth

Type : [in] FLOAT

Largeur du trait, en pixels indépendants de l’appareil. La valeur doit être supérieure ou égale à 0,0f. Si ce paramètre n’est pas spécifié, la valeur par défaut est 1.0f. Le trait est centré sur la ligne.

strokeStyle

Type : [in, facultatif] ID2D1StrokeStyle*

Style de trait à peindre ou NULL pour peindre un trait uni.

Valeur de retour

None

Remarques

En cas d’échec de cette méthode, elle ne retourne pas de code d’erreur. Pour déterminer si une méthode de dessin (telle que DrawRectangle) a échoué, case activée le résultat retourné par la méthode ID2D1RenderTarget ::EndDraw ou ID2D1RenderTarget ::Flush.

Exemples

L’exemple suivant utilise un ID2D1HwndRenderTarget pour dessiner et remplir plusieurs rectangles. Cet exemple génère la sortie illustrée dans l’illustration suivante.

Illustration de deux rectangles sur un arrière-plan de grille
// 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;
}

Pour obtenir un didacticiel connexe, consultez Créer une application Direct2D simple.

Configuration requise

Condition requise Valeur
Plateforme cible Windows
En-tête d2d1.h (inclure D2d1.h)
Bibliothèque D2d1.lib
DLL D2d1.dll

Voir aussi

Créer une simple application Direct2D

Comment dessiner et remplir une forme de base

ID2D1RenderTarget