LinearGradientBrush::GetBlend メソッド (gdiplusbrush.h)
LinearGradientBrush::GetBlend メソッドは、LinearGradientBrush オブジェクトからブレンド 係数とそれに対応するブレンド位置を取得します。
構文
Status GetBlend(
[out] REAL *blendFactors,
[out] REAL *blendPositions,
[in] INT count
);
パラメーター
[out] blendFactors
種類: REAL*
ブレンド係数を受け取る配列へのポインター。 配列内の各数値は、終了色のパーセンテージを示し、0.0 から 1.0 の範囲です。
[out] blendPositions
種類: REAL*
ブレンド位置を受け取る配列へのポインター。 配列内の各数値は、開始境界と終了境界の間の距離のパーセンテージを示し、0.0 から 1.0 の範囲です。0.0 はグラデーションの開始境界を示し、1.0 は終了境界を示します。 0.0 ~ 1.0 のブレンド位置は、境界線と平行な線を示します。これは、開始境界から終了境界までの距離の一定の割合です。 たとえば、ブレンド位置が 0.7 の場合、開始境界から終了境界までの距離の 70% の線が示されます。 境界線に平行な線の色は一定です。
[in] count
型: INT
取得するブレンド 係数の数を指定する整数。 LinearGradientBrush オブジェクトの LinearGradientBrush::GetBlend メソッドを呼び出す前に、同じ LinearGradientBrush オブジェクトの LinearGradientBrush::GetBlendCount メソッドを呼び出して、ブレンド 係数の現在の数を確認します。 取得されるブレンド位置の数は、取得されたブレンド 係数の数と同じです。
戻り値
種類: 状態
メソッドが成功した場合は、 Status 列挙体の要素である Ok を返します。
メソッドが失敗した場合は、 Status 列挙体の他の要素のいずれかを返します。
解説
LinearGradientBrush オブジェクトには、開始境界と終了境界の 2 つの並列境界があります。 色は、これら 2 つの境界のそれぞれに関連付けられます。 各境界は、指定した点を通過する直線です。開始境界は開始点を通過します。終了境界は終了点を通過し、線形グラデーション ブラシの方向に垂直です。 線形グラデーション ブラシの方向は、始点と終点で定義される線に従います。 この線 ("方向線" は、水平、垂直、または対角線である場合があります。 境界に平行な線上にあるすべての点は同じ色になります。 線状のグラデーション ブラシで領域を塗りつぶすと、開始境界から終了境界に向けて方向線に沿って移動すると、色が徐々に 1 つの線から次の線に変わります。 既定では、色の変化は距離の変化に比例します。つまり、開始境界と終了境界の間の距離の 30% の線には、開始境界の色と終了境界の色との間の距離の 30% の色があります。 色パターンは、開始境界と終了境界の外側で繰り返されます。
LinearGradientBrush オブジェクトの LinearGradientBrush::SetBlend メソッドを呼び出して、色と距離の関係をカスタマイズできます。 たとえば、ブレンド位置を {0, 0.5, 1} に設定し、ブレンド係数を {0, 0.3, 1} に設定するとします。 次に、開始境界と終了境界の間の距離の 50% の線は、開始境界の色と終了境界の色の間の距離の 30% の色になります。
例
次の例では、線形グラデーション ブラシを作成し、そのブレンドを設定し、ブラシを使用して四角形を塗りつぶします。 その後、コードはブレンドを取得します。 その後、ブレンド係数と位置を検査したり、何らかの方法で使用することができます。
VOID Example_GetBlend(HDC hdc)
{
Graphics myGraphics(hdc);
// Create a linear gradient brush, and set its blend.
REAL fac[] = {0.0f, 0.4f, 0.6f, 1.0f};
REAL pos[] = {0.0f, 0.2f, 0.8f, 1.0f};
LinearGradientBrush linGrBrush(
Point(0, 0),
Point(100, 0),
Color(255, 255, 0, 0), // red
Color(255, 0, 0, 255)); // blue
linGrBrush.SetBlend(fac, pos, 4);
// Use the linear gradient brush to fill a rectangle.
myGraphics.FillRectangle(&linGrBrush, 0, 0, 100, 50);
// Obtain information about the linear gradient brush.
INT blendCount;
REAL* factors = NULL;
REAL* positions = NULL;
blendCount = linGrBrush.GetBlendCount();
factors = new REAL[blendCount];
positions = new REAL[blendCount];
linGrBrush.GetBlend(factors, positions, blendCount);
for(INT j = 0; j < blendCount; ++j)
{
// Inspect or use the value in factors[j].
// Inspect or use the value in positions[j].
}
}
要件
サポートされている最小のクライアント | Windows XP、Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | gdiplusbrush.h (Gdiplus.h を含む) |
Library | Gdiplus.lib |
[DLL] | Gdiplus.dll |