Реализация матричного преобразования на новом объекте - PullRequest
0 голосов
/ 24 апреля 2011

Мне нужно иметь возможность преобразовывать один из моих собственных объектов вместе с некоторыми объектами GraphicsPath в .Net. Мне нужны любые операции масштабирования, перевода и поворота, которые выполняются над объектами 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. Я довольно долго искал, но не смог найти никаких ссылок на лучший способ сделать это.

Спасибо!

1 Ответ

1 голос
/ 17 июня 2011

Осуществить преобразование самостоятельно не очень сложно, взгляните на:

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[])
...