Metode PathGradientBrush::GetInterpolationColors (gdipluspath.h)

Metode PathGradientBrush::GetInterpolationColors mendapatkan warna preset dan posisi campuran yang saat ini ditentukan untuk sikat gradien jalur ini.

Sintaks

Status GetInterpolationColors(
  [out] Color *presetColors,
  [out] REAL  *blendPositions,
  [in]  INT   count
);

Parameter

[out] presetColors

Jenis: Warna*

Penunjuk ke array yang menerima warna prasetel. Warna indeks tertentu dalam array presetColors sesuai dengan posisi campuran indeks yang sama dalam array blendPositions .

[out] blendPositions

Jenis: REAL*

Penunjuk ke array yang menerima posisi campuran. Setiap posisi campuran adalah angka dari 0 hingga 1, di mana 0 menunjukkan batas gradien dan 1 menunjukkan titik tengah. Posisi campuran antara 0 dan 1 menunjukkan kumpulan semua titik yang merupakan pecahan jarak tertentu dari batas ke titik tengah. Misalnya, posisi campuran 0,7 menunjukkan kumpulan semua titik yang 70 persen dari jalan dari batas ke titik tengah.

[in] count

Jenis: INT

Bilangan bulat yang menentukan jumlah elemen dalam array presetColors . Ini sama dengan jumlah elemen dalam array blendPositions .

Nilai kembali

Jenis: Status

Jika metode berhasil, metode mengembalikan Ok, yang merupakan elemen dari enumerasi Status .

Jika metode gagal, metode mengembalikan salah satu elemen lain dari enumerasi Status .

Keterangan

Sikat gradien jalur sederhana memiliki dua warna: warna batas dan warna tengah. Ketika Anda melukis dengan kuas seperti itu, warna berubah secara bertahap dari warna batas ke warna tengah saat Anda berpindah dari jalur batas ke titik tengah. Anda dapat membuat gradien yang lebih kompleks dengan menentukan array warna preset dan array posisi campuran.

Sebelum Anda memanggil metode PathGradientBrush::GetInterpolationColors , Anda harus mengalokasikan dua buffer: satu untuk menahan array warna preset dan satu untuk menahan array posisi campuran. Anda dapat memanggil metode PathGradientBrush::GetInterpolationColorCount dari objek PathGradientBrush untuk menentukan ukuran buffer yang diperlukan. Ukuran buffer warna adalah nilai pengembalian PathGradientBrush::GetInterpolationColorCount dikalikan dengan sizeof(Color). Ukuran buffer posisi adalah nilai PathGradientBrush::GetInterpolationColorCount dikalikan dengan sizeof( REAL).

Contoh

Contoh berikut membuat objek PathGradientBrush dari jalur segitiga. Kode mengatur warna prasetel ke merah, biru, dan aqua dan mengatur posisi campuran ke 0, 0,6, dan 1. Kode memanggil metode PathGradientBrush::GetInterpolationColorCount dari objek PathGradientBrush untuk mendapatkan jumlah warna preset yang saat ini diatur untuk kuas. Selanjutnya, kode mengalokasikan dua buffer: satu untuk menahan array warna preset, dan satu untuk menahan array posisi campuran. Panggilan ke metode PathGradientBrush::GetInterpolationColors dari objek PathGradientBrush mengisi buffer dengan warna preset dan posisi campuran. Akhirnya kode mengisi persegi kecil dengan masing-masing warna preset.

VOID Example_GetInterpColors(HDC hdc)
{
   Graphics graphics(hdc);

   // Create a path gradient brush from an array of points, and
   // set the interpolation colors for that brush.

   Point points[] = {Point(100, 0), Point(200, 200), Point(0, 200)};
   PathGradientBrush pthGrBrush(points, 3);

   Color col[] = {
      Color(255, 255, 0, 0),     // red
      Color(255, 0, 0, 255),     // blue
      Color(255, 0, 255, 255)};  // aqua

   REAL pos[] = {
      0.0f,    // red at the boundary
      0.6f,    // blue 60 percent of the way from the boundary to the center
      1.0f};   // aqua at the center

   pthGrBrush.SetInterpolationColors(col, pos, 3);

   // Obtain information about the path gradient brush.
   INT colorCount = pthGrBrush.GetInterpolationColorCount();
   Color* colors = new Color[colorCount];
   REAL* positions = new REAL[colorCount];
   pthGrBrush.GetInterpolationColors(colors, positions, colorCount);

   // Fill a small square with each of the interpolation colors.
   SolidBrush solidBrush(Color(255, 255, 255, 255));

   for(INT j = 0; j < colorCount; ++j)
   {
      solidBrush.SetColor(colors[j]);
      graphics.FillRectangle(&solidBrush, 15*j, 0, 10, 10);
   }

   delete [] colors;
   delete [] positions; 
}

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows XP, Windows 2000 Professional [hanya aplikasi desktop]
Server minimum yang didukung Windows 2000 Server [hanya aplikasi desktop]
Target Platform Windows
Header gdipluspath.h (termasuk Gdiplus.h)
Pustaka Gdiplus.lib
DLL Gdiplus.dll

Lihat juga

Kuas dan Bentuk Terisi

Warna

Membuat Gradien Jalur

Mengisi Bentuk dengan Gradien Warna

PathGradientBrush

PathGradientBrush::GetInterpolationColorCount

PathGradientBrush::SetInterpolationColors