【问题标题】:Rotate Rectangle - C#旋转矩形 - C#
【发布时间】:2016-11-24 16:27:17
【问题描述】:

我想让一个矩形围绕它的中心旋转。旋转效果很好,但我不知道如何围绕它的中心旋转它。有人能帮我吗?谢谢! :) 这是我的代码:

    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);
    }

【问题讨论】:

  • 为什么要在按钮点击事件中一次又一次地分配绘制事件处理函数?
  • 因为我想在按下那个按钮时旋转它。
  • Graphics g = CreateGraphics(); 哎哟!您应该使用 e.Graphics 对象。这里和总是!!旋转后将平移设置回相同的量,然后绘制!数量应该是矩形大小的一半!
  • 谢谢,但这对我的问题没有帮助。
  • @TaW,Graphics g = CreateGraphics();Graphics g = e.Graphics; 有什么不同?

标签: c# graphics rectangles


【解决方案1】:

平移所有顶点,使矩形的中心位于(zero, zero) 上。如果矩形的中心是(x,y),则需要将所有顶点平移(-x,-y)。然后旋转任意角度,然后将顶点平移回(x,y)

【讨论】:

    猜你喜欢
    • 2017-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-26
    相关资源
    最近更新 更多