2016-01-19 139 views
0

我正在C#中製作一個程序,它將旋轉由「+」製成的rhombs,但我不知道如何繪製它們。我試圖自己輸入繪圖方法,但是我卡住了,我只是不知道如何繪製它。我想保持代碼儘可能簡單,沒有任何位圖或圖形。如果有人會想出繪圖方法,我會非常感激。 我試圖通過在循環中找到中點之間的點來繪製它,但它不能很好地工作,所以有人可以幫助我嗎? PUNKT =點如何繪製旋轉的菱形?

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

輸出: - 而且每個菱形應本身繞樞軸(其中心)

 + 
    + + 
    + + 
    +  + 
    +  + 
+   + 
+   +  + 
+   +  + + 
    +  +  + + 
    +  +  +  + 
    + +  +  + 
    + +  +   + 
     +  +   + 
     +   +   + 
    + +   +  + 
    + +   +  + 
    +  +   + + 
    +  +   + + 
+   +   +  
+   + 
+   + 
    +  + 
    +  + 
    + + 
    + + 
     +  
+1

你能告訴我們輸出結果是什麼樣子嗎?或者它應該看起來像什麼? –

+0

'draw()'函數/方法在哪裏? – heltonbiker

+0

沒有在這裏添加它,因爲它在旋轉後效果不好。但我可以添加它,如果你需要它 – Dreik

回答

0

也許你應該讓你的中間結果(punkt.x和punkt.y以及如dx和dy)爲double,並且只有在最終顯示它們時纔將它們四捨五入爲整數。

+0

我試過了,但它不能幫助我傷心。 – Dreik