2016-11-24 5 views
-1

Я хочу, чтобы прямоугольник вращался вокруг его центра. Вращение работает отлично, но я не могу понять, как вращать его вокруг своего центра. Кто-нибудь может мне помочь? Благодаря! :) Вот мой код:Вращайте прямоугольник - C#

private void button1_Click(object sender, EventArgs e) 
    { 
     Paint += new PaintEventHandler(PaintRectangle); 
     angle = 0; 
     t = new Timer(); 
     t.Tick += new EventHandler(DrawRectangle); 
     t.Interval = 1; 
     t.Start(); 
    } 

    private void DrawRectangle(object sender, EventArgs e) 
    { 
     angle++; 
     Invalidate(); 
    } 

    private void PaintRectangle(object sender, PaintEventArgs e) 
    { 
     Rectangle r = new Rectangle(0, 0, 100, 10); 
     Graphics g = CreateGraphics(); 
     g.TranslateTransform(124, 150); 
     g.RotateTransform(angle); 
     g.DrawRectangle(Pens.White, r); 
    } 
+0

Зачем вам назначать обработчик события рисования снова и снова в событии нажатия кнопки? –

+0

Потому что я хочу повернуть его, когда эта кнопка нажата. – DannyDSB

+3

'Графика g = CreateGraphics();' ouch! вы должны использовать объект e.Graphics. Здесь ansd __always__ !! После того, как roation установит перевод назад __ на ту же сумму__, тогда рисуйте! Сумма должна быть вдвое меньше размера прямоугольника! – TaW

ответ

1

Перевести все вершины так, чтобы центр прямоугольника будет на (zero, zero). Если центр прямоугольника равен (x, y), вам нужно перевести все вершины на (-x,-y). Затем поверните на любой угол, а затем переведите вершины назад на (x,y).

 Смежные вопросы

  • Нет связанных вопросов^_^