2016-05-05 8 views
1

решаемыеКак повернуть фотокамеру вокруг точки?

Я пытаюсь моделировать планету, вращающуюся звезду. Я в настоящее время известно о синтаксисе, чтобы переместить окно изображения (у меня есть это в таймере так повторяется)

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

Но я не знаю, с чего начать, так что она вращается вокруг определенной точки. Как бы мне повернуть вокруг (0,0)?

+0

Вы должны повернуть изображение * в * картинный ящик, а не сам снимок - [Как повернуть изображение на C#] (http://stackoverflow.com/questions/2163829/how-do-i-rotate- a-picture-in-c-sharp). Тот же принцип применяется для перемещения фотокарт в целом: рассмотрите вместо этого рисунок в конкретных координатах непосредственно на (предположительно) форме. –

+0

Но мне не нужно, чтобы изображение вращалось. Мне нужно окно, чтобы повернуть _around_ точку с заданным расстоянием. –

+1

Вам нужно будет работать с тригонометрическими функциями (например, 'x = Math.Sin (angle); y = Math.Cos (angle);'), если вы хотите повернуть объект вокруг оси. (Происхождение [0, 0] будет просто поворот вокруг оси * z * в начале координат.) – ray

ответ

0

Это может помочь:

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 и не будет разочарован тем, что это будет выглядеть немного неровный. Winforms действительно плохо при анимации.

Если вы хотите, чтобы изображение вращалось, вы также можете найти example here.

+0

Большое спасибо. –

Смежные вопросы