我在C#中创建一个程序,用于旋转由" +"制作的rhombs。但我不知道如何绘制它们。我自己尝试输入绘图方法,但是我已经卡住了,我只是不知道如何绘制它。我希望代码尽可能简单,没有任何位图或图形。如果有人想出绘图方法,我会很高兴。 我试图通过在循环中找到积分中间点来绘制它,但它没有奏效,所以有人可以帮我吗? Punkt = Point
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;
}
}
输出: - 每个菱形应围绕枢轴(它们的中心)旋转
+
+ +
+ +
+ +
+ +
+ +
+ + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + +
+ + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + +
+ +
+ +
+ +
+ +
+ +
+ +
+
答案 0 :(得分:0)
也许你应该将你的中间结果(punkt.x和punkt.y以及dx和dy)保持为double,并在最终显示它们时将它们舍入为整数。