如何绘制旋转菱形

本文关键字:旋转 绘制 何绘制 | 更新日期: 2023-09-27 18:30:53

我正在用C#制作一个程序,它将旋转由"+"组成的菱形,但我不知道如何绘制它们。我尝试自己输入绘图方法,但我被卡住了,我只是不知道如何绘制它了。我想使代码尽可能简单,没有任何位图或图形。如果有人想出绘图方法,我会很棒。我试图通过找到循环中点之间的中间点来绘制它,但它效果不佳,所以有人可以帮我吗?朋克 = 点

class romb
{
    private punkt p_up { get; set; } 
    private punkt p_left { get; set; } 
    private punkt p_right { get; set; } 
    private punkt p_down { get; set; } 
  private void MoveOneFrame()
  {
    punkt pivot = new punkt(((this.p_left.Get_x() + this.p_right.Get_x()) / 2), ((this.p_left.Get_y() + this.p_right.Get_y()) / 2));
    this.p_up = Rotate(p_up, pivot, 8);
    this.p_down = Rotate(p_down, pivot, 8);
    this.p_left = Rotate(p_left, pivot, 8);
    this.p_right = Rotate(p_right, pivot, 8);
  }
  private static punkt Rotate(punkt point, punkt pivot, double angleDegree)
  {            
    double angle = angleDegree * Math.PI / 180;
    double cos = Math.Cos(angle);
    double sin = Math.Sin(angle);
    int dx = point.Get_x() - pivot.Get_x();
    int dy = point.Get_y() - pivot.Get_y();
    double x = cos * dx - sin * dy + pivot.Get_x();
    double y = sin * dx + cos * dy + pivot.Get_y();
    punkt rotated = new punkt((int)Math.Round(x), (int)Math.Round(y));
    return rotated;
  }
}

输出: - 每个菱形都应该围绕枢轴(它们的中心)旋转自己

      +
     + +
    +   +
   +     +
  +       +
 +         +
+           +        +
 +         +        + +
  +       +        +   +
   +     +        +     +
    +   +        +       +
     + +        +         +
      +        +           +
      +         +         +
     + +         +       +
    +   +         +     +
   +     +         +   +
  +       +         + +
 +         +         +      
+           +   
 +         +
  +       +
   +     +
    +   +
     + +
      +       

如何绘制旋转菱形

也许你应该将中间结果(punkt.x 和 punkt.y 以及 dx 和 dy)保持为双精度,并且只有在最终显示它们时才将它们四舍五入为整数。