0

.Net のいくつかの GraphicsPath オブジェクトと共に、自分のオブジェクトの 1 つを変換できる必要があります。GraphicsPath オブジェクトで実行されるスケーリング、変換、回転操作は、自分のオブジェクトでも実行する必要があります。

たとえば、次のスケーリング コードがあります。

using (Matrix ScaleTransform = new Matrix(1, 0, 0, 1, 0, 0)) // scale matrix
{
    ScaleTransform.Scale(ScaleX, ScaleY);
    moPath.Transform(ScaleTransform);
    moBoundingBox.Transform(ScaleTransform);

    MyObject.Transform(ScaleTranform);
}


//In "MyObject":
public void Transform(Matrix m)
{
    //How is this implemented?  Is there a built-in .Net method?
}

問題は、MyObject で「Transform」メソッドを実装する最良の方法は何かということです。かなりの検索を行いましたが、これを行うための最良の方法についての参照が見つかりませんでした。

ありがとう!

4

1 に答える 1

1

変換を自分で実装するのはそれほど難しいことではありません。以下をご覧ください。

http://en.wikipedia.org/wiki/Transformation_matrix

あなたのオブジェクトはビットマップか何かですか?次に、これはいくつかの方法かもしれません:

http://en.csharp-online.net/GDIplus_Graphics_Transformation%E2%80%94Image_Transformation

または、オブジェクトを残して変換をスタックにプッシュし、それをグラフィックスにするときに使用することもできます。

ねえ - Matrix クラスはあなたのために多くのことができるようです:

http://msdn.microsoft.com/en-us/library/system.drawing.drawing2d.matrix.aspx

例えば

TransformPoints(Point[]) or TransformVectors(Point[])
于 2011-06-16T21:38:51.757 に答える