PathGradientBrush::MultiplyTransform メソッド (gdipluspath.h)

PathGradientBrush::MultiplyTransform メソッドは、ブラシの変換行列をそれ自体と別の行列の積で更新します。

構文

Status MultiplyTransform(
  [in] const Matrix *matrix,
  [in] MatrixOrder  order
);

パラメーター

[in] matrix

種類: マトリックス*

ブラシの現在の変換行列で乗算される行列へのポインター。

[in] order

型: MatrixOrder

省略可能。 乗算の順序を指定する MatrixOrder 列挙体の要素。 MatrixOrderPrepend は、渡された行列が左側にあることを指定し、 MatrixOrderAppend は、渡された行列が右側にあることを指定します。 既定値は MatrixOrderPrepend です。

戻り値

種類: 状態

メソッドが成功した場合は、Status 列挙体の要素である Ok を返します

メソッドが失敗した場合は、 Status 列挙体の他の要素のいずれかを返します。

注釈

単一の 3 ×3 行列は、アフィン変換の任意のシーケンスを格納できます。 複数の 3 ×3 個の行列があり、それぞれがアフィン変換を表す場合、それらの行列の積は、変換のシーケンス全体を表す単一の 3 ×3 行列です。 その製品によって表される変換は、複合変換と呼ばれます。 たとえば、行列 R が回転を表し、行列 T が平行移動を表したとします。 行列 M が積 RT の場合、行列 M は複合変換を表します。最初に回転し、次に平行移動します。

行列乗算の順序は重要です。 一般に、マトリックス積RTはマトリックス積TRと同じではない。 前の段落で指定した例では、RT で表される複合変換 (最初の回転、次に平行移動) は、TR で表される複合変換 (最初の変換、回転) と同じではありません。

次の例では、三角形のパスに基づいて PathGradientBrush オブジェクトを作成します。 このコードでは、 PathGradientBrush オブジェクトの PathGradientBrush::ScaleTransform メソッドを呼び出して ブラシの変換マトリックスに水平方向のスケーリングを表す要素を 3 で埋めます。 次に、同じ PathGradientBrush オブジェクトの PathGradientBrush::MultiplyTransform メソッドを呼び出して、ブラシの既存の変換行列に翻訳を表す行列 (10 right, 30 down) を乗算します。 MatrixOrderAppend 引数は、乗算が右側の変換行列で実行されることを示します。

乗算の後、ブラシの変換行列は複合変換 (最初のスケール、次に変換) を表します。 その複合変換は FillRectangle の呼び出し中にブラシの境界パスに適用されるため、描画されるのは変換されたパス内の領域です。

VOID Example_MultiplyTransform(HDC hdc)
{
   Graphics graphics(hdc);
   Point pts[] = {Point(0, 0), Point(50, 0), Point(50, 50)};

   // Translate 10 right, 30 down.
   Matrix matrix(1.0f, 0.0f, 0.0f, 1.0f, 10.0f, 30.0f);

   PathGradientBrush pthGrBrush(pts, 3);
   pthGrBrush.ScaleTransform(3.0f, 1.0f);
   pthGrBrush.MultiplyTransform(&matrix, MatrixOrderAppend);

   graphics.FillRectangle(&pthGrBrush, 0, 0, 200, 200);  
}

要件

要件
サポートされている最小のクライアント Windows XP、Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー gdipluspath.h (Gdiplus.h を含む)
Library Gdiplus.lib
[DLL] Gdiplus.dll

こちらもご覧ください

ブラシと図形の塗りつぶし

パス グラデーションの作成

色のグラデーションで図形を塗りつぶす

マトリックス

変換の行列表現

MatrixOrder

PathGradientBrush

PathGradientBrush::GetTransform

PathGradientBrush::ResetTransform

PathGradientBrush::RotateTransform

PathGradientBrush::ScaleTransform

PathGradientBrush::SetTransform

PathGradientBrush::TranslateTransform

変換