Преобразование вращения аналоговых часов

У меня проблема с преобразованием вращения в моих аналоговых часах.

for (int i = 0; i <= 12; i++)
{
    Ellipse teckaa = new Ellipse();
    teckaa.Height = 30;
    teckaa.Width = 30;
    teckaa.Stroke = Brushes.Black;
    teckaa.Fill = Brushes.Black;
    canvas.Children.Add(teckaa);
    Canvas.SetTop(teckaa, 25);
    Canvas.SetLeft(teckaa, 215);
    RotateTransform otoceni = new RotateTransform(i*30, 230, 230);
    canvas.RenderTransform = otoceni;
}

У меня есть этот код для часовых точек, но он движется только с одной точкой. Есть ли способ изменить имя эллипса в цикле for()?


person Datsheep    schedule 02.02.2014    source источник
comment
Зачем возиться с Именем? Проблемы, кажется, заключаются в том, что вы применяете преобразование ко всему холсту. Все 12 точек накладываются друг на друга.   -  person Henk Holterman    schedule 02.02.2014
comment
Проблема решена, спасибо.   -  person Datsheep    schedule 02.02.2014
comment
Хорошо, вы можете опубликовать решение как самостоятельный ответ.   -  person Henk Holterman    schedule 02.02.2014
comment
У меня меньше 10 репутации, поэтому я не могу ответить на свой вопрос. Я заменил только холст на teckaa. -> teckaa.RenderTransform = otoceni;   -  person Datsheep    schedule 02.02.2014
comment
Хорошо, я не знал, что есть порог.   -  person Henk Holterman    schedule 02.02.2014


Ответы (1)


Примените Transform к отдельным часовым маркерам, а не ко всему холсту:

for (int i = 0; i <= 12; i++)
{
    Ellipse teckaa = new Ellipse();
    teckaa.Height = 30;
    teckaa.Width = 30;
    teckaa.Stroke = Brushes.Black;
    teckaa.Fill = Brushes.Black;
    canvas.Children.Add(teckaa);
    Canvas.SetTop(teckaa, 25);
    Canvas.SetLeft(teckaa, 215);
    RotateTransform otoceni = new RotateTransform(i*30, 230, 230);

    //canvas.RenderTransform = otoceni;
    teckaa.RenderTransform = otoceni;     
}

Обратитесь к Петцольду за действительно классными всеми часами XAML.

person Henk Holterman    schedule 02.02.2014