1

私は Matrix クラスを何千回も使用しました。私は行列数学の初歩的な理解を持っています。この主題に関するクラスを受講してから何年も経ちます。しかし、GraphicsPath のポイントを操作するために、このクラスが内部で何をしているのかを完全には理解していません。

具体的には、GraphicsPaths に関連するものとして、そこで何をしているのでしょうか? または別の見方をすると、Matrix クラスが存在せず、独自のクラスを作成する必要があった場合、どのように見え、何をするのでしょうか? (私は自分で作成しているのではなく、理解したいだけです)

さらに、Matrix クラスで使用される行列の次元を知っている人はいますか?

編集:リフレクターで次の呼び出しに絞り込みました。そこからバブキッス。

[DllImport("gdiplus.dll", CharSet=CharSet.Unicode, SetLastError=true, ExactSpelling=true)]
internal static extern int GdipTransformPath(HandleRef path, HandleRef matrix);
4

3 に答える 3

1

この場合、Matrix クラスは 2D 変換行列です。マトリックスは、グラフィックス パスのスケーリング、回転、および/または変換に使用されます。数学は比較的簡単です。ここで見ることができます: http://en.wikipedia.org/wiki/Transformation_matrix

于 2009-08-05T14:52:04.707 に答える
1

System.Drawing.Matrix クラスに相互に変換する独自のマトリックス クラスを作成する場合に注意すべき重要な点の 1 つは、.NET クラスはポイントを変換するときに最も一般的に使用される標準を使用しないということです。

.NET マトリックスは、変換が行われる前に転置されているようです。

こちらの背景もお読みください: http://www.codeproject.com/KB/recipes/psdotnetmatrix.aspx

于 2009-08-05T15:11:01.667 に答える
0

GraphicsPath は基本的に、ポイントのコレクションと、ポイントが互いにどのように関連しているかを説明するフラグです。マトリックス クラスは、それらのポイントにマトリックスを適用するだけです。

同じことを実装できます: 1. 新しい空の GraphicsPath を作成します。 2. GraphicsPathIterator を使用して、パス (およびサブパス) を反復処理します。 3. 各ポイントを取り、マトリックスを適用します。 4. そのポイントを新しい GraphicsPath に追加します。

しかし、それをしないでください。GraphicsPath の型は十分に文書化されていません。

于 2009-08-05T14:49:05.540 に答える