-1
我想讓一個三角形來回移動弧線,三角形應該在移動時旋轉。WinForm三角形動畫
我已經做了圖片來解釋它更好地: https://app.box.com/s/mt9p66zlmtkkgkdvtb5h
數學看起來我的權利,任何人都可以告訴我,我做錯了什麼?
public partial class Form1 : Form
{
bool turn = false;
double angle = 0;
public Form1()
{
InitializeComponent();
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
Brush solidBlackBrush = new SolidBrush(Color.Black); //En solid svart brush som brukes flere steder
Pen solidBackPen = new Pen(solidBlackBrush);//En solid svart pen som brukes flere steder
//Trekant = Norwegian for Triangle, Trekant is a class that draws a polygon shaped as a Triangle.
Trekant tre = new Trekant();
e.Graphics.DrawArc(solidBackPen, new Rectangle(new Point(50,50), new Size(100,100)) , 180, 180);
//X = a + r*Cos(angle) | Y = b + r*Sin(angle)
double x = (50+(100/2)) + (100/2) * Math.Cos(Trekant.DegreeToRadian(angle));
double y = (50+(100/2)) - (100/2) * Math.Sin(Trekant.DegreeToRadian(angle));
e.Graphics.TranslateTransform((float)x - 15, (float)y - 40);//Flytter 0 slik at pistolen havner på rett sted
e.Graphics.RotateTransform((float)-Trekant.RadianToDegree(Trekant.DegreeToRadian(angle-90)));
tre.Draw(e.Graphics);
}
private void timer1_Tick(object sender, EventArgs e)
{
if (angle == 0)
{
turn = false;
}
if (angle == 180)
{
turn = true;
}
if (turn)
{
angle -= 10;
}
if (!turn)
{
angle += 10;
}
this.Invalidate();
}
}
它目前做了什麼?在我看來,你在旋轉之前翻譯 – Sayse
這個三角形是相對於0繪製的,所以我將0移動到圓弧上的右側,然後我將三角形旋轉到正確的角度。截至目前看起來,旋轉角度大約是正確的,三角形不在正確的位置。 – mosern
爲什麼這是:(50+(100/2))+(100/2)'和這個:(50+(100/2)) - (100/2)' - 這些計算每次都是一樣的。即它只是一個常數值。你是否缺少一個變量?此外還有一個性能提示:只需將筆和筆刷聲明一次,然後在班級中重複使用它們,而不是每次重新創建它們。 –