Bagikan melalui


struktur D2D1_GRADIENT_STOP (d2d1.h)

Berisi posisi dan warna pemberhentian gradien.

Sintaks

typedef struct D2D1_GRADIENT_STOP {
  FLOAT        position;
  D2D1_COLOR_F color;
} D2D1_GRADIENT_STOP;

Anggota

position

Jenis: FLOAT

Nilai yang menunjukkan posisi relatif pemberhentian gradien di kuas. Nilai ini harus dalam rentang [0,0f, 1,0f] jika pemberhentian gradien akan dilihat secara eksplisit.

color

Jenis: D2D1_COLOR_F

Warna pemberhentian gradien.

Keterangan

Pemberhentian gradien dapat ditentukan dalam urutan apa pun jika berada di posisi yang berbeda. Dua pemberhentian dapat berbagi posisi. Dalam hal ini, pemberhentian pertama yang ditentukan diperlakukan sebagai stop "rendah" (lebih dekat 0,0f) dan pemberhentian berikutnya diperlakukan sebagai "lebih tinggi" (lebih dekat 1,0f). Perilaku ini berguna jika penelepon menginginkan transisi instan di tengah pemberhentian.

Biasanya, setidaknya ada dua poin dalam koleksi, meskipun pembuatan hanya dengan satu stop diizinkan. Misalnya, satu titik berada di posisi 0,0f, titik lain berada di posisi 1,0f, dan titik tambahan didistribusikan dalam rentang [0, 1]. Di mana perkembangan gradien berada di luar kisaran [0, 1], pemberhentian disimpan, tetapi dapat memengaruhi gradien.

Saat digambar, rentang posisi [0, 1] dipetakan ke kuas, dengan cara yang bergantung pada kuas. Untuk detailnya, lihat ID2D1LinearGradientBrush dan ID2D1RadialGradientBrush.

Gradien berhenti dengan posisi di luar rentang [0, 1] tidak dapat dilihat secara eksplisit, tetapi masih dapat memengaruhi warna yang dihasilkan dalam rentang [0, 1]. Misalnya, gradien dua atap {{0.0f, Black}, {2.0f, White}} tidak dapat dibedakan secara visual dari {{0.0f, Black}, {1.0f, Mid-level gray}}. Juga, warna dijepit sebelum interpolasi.

Contoh

Contoh berikut membuat array pemberhentian gradien, lalu menggunakannya untuk membuat ID2D1GradientStopCollection.

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

Contoh kode berikutnya menggunakan ID2D1GradientStopCollection untuk membuat ID2D1LinearGradientBrush.

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

Persyaratan

   
Klien minimum yang didukung Windows 7, Windows Vista dengan SP2 dan Pembaruan Platform untuk Windows Vista [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows Server 2008 R2, Windows Server 2008 dengan SP2 dan Pembaruan Platform untuk Windows Server 2008 [aplikasi desktop | Aplikasi UWP]
Header d2d1.h

Lihat juga

Gambaran Umum Brush

CreateGradientStopCollection

Cara Membuat Sikat Gradien Linier

Cara Membuat Sikat Gradien Radial

ID2D1GradientStopCollection

ID2D1LinearGradientBrush

ID2D1RadialGradientBrush