Comment créer un pinceau de dégradé linéaire
Pour créer un pinceau de dégradé linéaire, utilisez la méthode CreateLinearGradientBrush et spécifiez les propriétés de pinceau de dégradé linéaire et la collection de points de dégradé. Certaines surcharges vous permettent de spécifier les propriétés de pinceau. Le code suivant montre comment créer un pinceau de dégradé linéaire pour remplir un carré, et un pinceau noir Uni pour dessiner le contour du carré.
Le code génère la sortie illustrée dans l’illustration suivante.

Déclarez une variable de type ID2D1LinearGradientBrush.
ID2D1LinearGradientBrush *m_pLinearGradientBrush;Utilisez la méthode ID2D1RenderTarget :: CreateGradientStopCollection pour créer la collection ID2D1GradientStopCollection avec un tableau déclaré de structures de _ _ point de dégradé d2d1 , comme indiqué dans le code suivant.
Notes
à partir de Windows 8, vous pouvez utiliser la méthode ID2D1DeviceContext :: CreateGradientStopCollection pour créer une collection ID2D1GradientStopCollection1 à la place. Cette interface ajoute des dégradés de haute couleur et l’interpolation des dégradés dans les couleurs droites ou prmultiplied. Pour plus d’informations, consultez la page ID2DDeviceContext :: CreateGradientStopCollection .
// Create an array of gradient stops to put in the gradient stop // collection that will be used in the gradient brush. ID2D1GradientStopCollection *pGradientStops = NULL; D2D1_GRADIENT_STOP gradientStops[2]; gradientStops[0].color = D2D1::ColorF(D2D1::ColorF::Yellow, 1); gradientStops[0].position = 0.0f; gradientStops[1].color = D2D1::ColorF(D2D1::ColorF::ForestGreen, 1); gradientStops[1].position = 1.0f; // Create the ID2D1GradientStopCollection from a previously // declared array of D2D1_GRADIENT_STOP structs. hr = m_pRenderTarget->CreateGradientStopCollection( gradientStops, 2, D2D1_GAMMA_2_2, D2D1_EXTEND_MODE_CLAMP, &pGradientStops );Utilisez ID2D1RenderTarget :: CreateLinearGradientBrush pour créer un pinceau de dégradé linéaire, remplissez le carré avec le pinceau, puis dessinez le carré avec le pinceau de couleur noir.
// The line that determines the direction of the gradient starts at // the upper-left corner of the square and ends at the lower-right corner. if (SUCCEEDED(hr)) { hr = m_pRenderTarget->CreateLinearGradientBrush( D2D1::LinearGradientBrushProperties( D2D1::Point2F(0, 0), D2D1::Point2F(150, 150)), pGradientStops, &m_pLinearGradientBrush ); }m_pRenderTarget->FillRectangle(&rcBrushRect, m_pLinearGradientBrush); m_pRenderTarget->DrawRectangle(&rcBrushRect, m_pBlackBrush, 1, NULL);