2016-05-05 13 views
1

Wie drehe ich eine Picturebox um einen Punkt?

Gelöst

Ich versuche, einen Planeten rotierenden einen Stern zu simulieren. Ich bin zur Zeit bewusst die Syntax, um das Bildfeld (Ich habe dies in einem Timer, so dass es wiederholt wird) zu bewegen

private void rotate_timer(object sender, EventArgs e) { 
picturebox1.location = new point (picturebox1.location.x + 1,   
picturebox1.location.y + 1); 
} 

Aber ich weiß nicht, wo so zu starten, dass es dich um einen bestimmten Punkt dreht. Wie würde ich drehen (0,0)?

+0

Sie würden das Bild * innerhalb * der Bildbox drehen, nicht die Bildbox selbst - [Wie rotiere ich ein Bild in C#] (http://stackoverflow.com/questions/2163829/how-do-i-rotate- a-Bild-in-c-sharp) - Dasselbe Prinzip gilt für das Bewegen der Bilderbox im Allgemeinen: Ziehen Sie stattdessen das Bild an bestimmten Koordinaten direkt auf (vermutlich) die Form. –

+0

Aber ich brauche das Bild nicht zu drehen. Ich brauche die Box, um um einen Punkt mit einer bestimmten Entfernung zu drehen. –

+1

Sie müssen mit trigonometrischen Funktionen arbeiten (z. B. 'x = Math.Sin (Winkel); y = Math.Cos (Winkel);'), wenn Sie ein Objekt um eine Achse drehen möchten. (Ursprung von [0, 0] wäre einfach eine Drehung um die * z * -Achse am Ursprung.) – ray

Antwort

0

helfen Dies kann:

float angle = 0; 
float rotSpeed = 1; 
Point origin = new Point(222, 222); // your origin 
int distance = 100;     // your distance 

private void timer1_Tick(object sender, EventArgs e) 
{ 
    angle += rotSpeed; 
    int x = (int)(origin.X + distance * Math.Sin(angle *Math.PI/180f)); 
    int y = (int)(origin.Y + distance * Math.Cos(angle *Math.PI/180f)); 
    yourControl.Location = new Point(x, y); 
} 

Interval Ihre Timer-Auswahl und enttäuscht nicht, dass es ein wenig uneben aussehen wird. Winforms ist wirklich schlecht in der Animation ..

Wenn Sie das Bild auch drehen möchten, können Sie eine example here finden.

+0

Vielen Dank. –

Verwandte Themen