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
Cara Membuat Sikat Gradien Linier