如何绘制旋转菱形
本文关键字:旋转 绘制 何绘制 | 更新日期: 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)保持为双精度,并且只有在最终显示它们时才将它们四舍五入为整数。