System.Drawing.Graphics - PullRequest
       1

System.Drawing.Graphics

3 голосов
/ 14 марта 2011

У меня есть одна проблема, связанная с вращением эллипса данным Центром, Предположим, у меня есть один эллипс, и что должно быть, это вращать этот эллипс на точку, заданную пользователем, и эллипс должен вращаться вокруг этой данной точки. Я пытался

g.RotateTransform(…)
g.TranslateTransform(…)

код:

Graphics g = this.GetGraphics(); 
g.RotateTransform((float)degreeArg); //degree to rotate object 
g.DrawEllipse(Pens.Red, 300, 300, 100, 200);

это работает нормально, но как мы можем дать наш центр, чтобы вращать эллипс ....

Как это возможно, пожалуйста, любой приятель может предложить …… Благодаря .......

Ответы [ 2 ]

4 голосов
/ 14 марта 2011

RotateTransform всегда вращается вокруг источника.Поэтому вам нужно сначала перевести центр вращения в начало координат, затем повернуть, а затем перевести его обратно.

Примерно так:

Graphics g = this.GetGraphics(); 
g.TranslateTransform(300,300);
g.RotateTransform((float)degreeArg); //degree to rotate object 
g.TranslateTransform(-300,-300);
g.DrawEllipse(Pens.Red, 300, 300, 100, 200);
3 голосов
/ 14 марта 2011
//center of the rotation
PointF center = new PointF(...);
//angle in degrees
float angle = 45.0f;
//use a rotation matrix
using (Matrix rotate = new Matrix())
{
    //used to restore g.Transform previous state
    GraphicsContainer container = g.BeginContainer();

    //create the rotation matrix
    rotate.RotateAt(angle, center);
    //add it to g.Transform
    g.Transform = rotate;

    //draw what you want
    ...

    //restore g.Transform state
    g.EndContainer(container);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...