如何建立線性漸層筆刷
若要建立線性漸層筆刷,請使用 CreateLinearGradientBrush 方法,並指定線性漸層筆刷屬性和漸層停駐點集合。 某些多載可讓您指定筆刷屬性。 下列程式代碼示範如何建立線性漸層筆刷來填滿正方形,以及繪製正方形外框的實心黑色筆刷。
此程式代碼會產生下圖所示的輸出。
宣告ID2D1LinearGradientBrush類型的變數。
ID2D1LinearGradientBrush *m_pLinearGradientBrush;
使用 ID2D1RenderTarget::CreateGradientStopCollection 方法來建立 ID2D1GradientStopCollection 集合與宣告的D2D1_GRADIENT_STOP結構數位,如下列程式代碼所示。
注意
從 Windows 8 開始,您可以使用 ID2D1DeviceContext::CreateGradientStopCollection 方法來建立 ID2D1GradientStopCollection1 集合。 這個介面會在直線或預乘色彩中加入高色彩漸層和漸層插補點。 如需詳細資訊,請參閱 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 );
使用 ID2D1RenderTarget::CreateLinearGradientBrush 來建立線性漸層筆刷、使用筆刷填滿方形,並使用黑色筆刷繪製方形。
// 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);
相關主題