Bagikan melalui


Cara Membuat Sikat Gradien Linier

Untuk membuat sikat gradien linier, gunakan metode CreateLinearGradientBrush dan tentukan properti sikat gradien linier dan koleksi stop gradien. Beberapa kelebihan beban memungkinkan Anda menentukan properti kuas. Kode berikut menunjukkan cara membuat sikat gradien linier untuk mengisi persegi, dan kuas hitam solid untuk menggambar garis luar persegi.

Kode menghasilkan output yang ditunjukkan dalam ilustrasi berikut.

ilustrasi persegi yang diisi dengan sikat gradien linier

  1. Mendeklarasikan variabel jenis ID2D1LinearGradientBrush.

        ID2D1LinearGradientBrush *m_pLinearGradientBrush;
    
  2. Gunakan metode ID2D1RenderTarget::CreateGradientStopCollection untuk membuat koleksi ID2D1GradientStopCollection dengan array struktur D2D1_GRADIENT_STOP yang dideklarasikan, seperti yang ditunjukkan dalam kode berikut.

    Catatan

    Dimulai dengan Windows 8, Anda dapat menggunakan metode ID2D1DeviceContext::CreateGradientStopCollection untuk membuat koleksi ID2D1GradientStopCollection1 sebagai gantinya. Antarmuka ini menambahkan gradien warna tinggi dan interpolasi gradien dalam warna lurus atau pramulus. Lihat halaman ID2DDeviceContext::CreateGradientStopCollection untuk informasi selengkapnya.

     

    // 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
        );
    
  3. Gunakan ID2D1RenderTarget::CreateLinearGradientBrush untuk membuat sikat gradien linier, mengisi persegi dengan kuas, dan menggambar persegi dengan kuas warna hitam.

    // 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);
    

Referensi Direct2D