Чтобы заставить предметы вращаться, вы должны посмотреть, используя Transforms . В этом случае наиболее уместным является преобразование поворота. Кроме того, для придания ему случайного рассеянного появления мы можем использовать ObjectDataProvider и генерировать наши углы где-то еще.
Я не знаю VB, но единственный C #, вовлеченный в это, довольно прост и должен легко передаваться.
Позволяет просто использовать что-то простое, такое как Цвета, которое можно легко переключить на пути к ресурсам изображения. Здесь у нас есть ObservableCollection наших цветов, а также отдельный класс, который мы будем использовать для генерации углов, все, что он собирается сделать, это вернуть число от 0 до 360, которое мы будем использовать для поворота каждого элемента.
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
Colors = new ObservableCollection<string>();
Colors.Add("Red");
Colors.Add("Blue");
Colors.Add("Green");
Colors.Add("Yellow");
this.DataContext = this;
}
public ObservableCollection<string> Colors
{
get;
set;
}
}
public class AngleService
{
private static Random rand = new Random();
public int GetAngle()
{
return rand.Next(0, 90);
}
}
В XAML теперь мы можем создать ресурс, который можно использовать для генерации углов.
<Window.Resources>
<local:AngleService x:Key="Local_AngleService" />
<ObjectDataProvider x:Key="Local_AngleProvider"
x:Shared="False"
ObjectInstance="{StaticResource Local_AngleService}"
MethodName="GetAngle" />
</Window.Resources>
Теперь нам просто нужно создать что-то для отображения наших предметов. Мы можем поместить их в ListBox и добавить шаблон данных, чтобы установить фон для каждого цветового элемента, а также применить RotateTransform.
<ListBox ItemsSource="{Binding Colors}"
VerticalContentAlignment="Center"
HorizontalContentAlignment="Center">
<ListBox.ItemTemplate>
<DataTemplate>
<Border x:Name="uiItemBorder"
BorderBrush="Black"
BorderThickness="2"
CornerRadius="3"
Background="{Binding}"
Width="50"
Height="50">
<TextBlock Text="{Binding}"
VerticalAlignment="Center"
HorizontalAlignment="Center" />
<Border.RenderTransform>
<RotateTransform Angle="{Binding Source={StaticResource Local_AngleProvider}}" />
</Border.RenderTransform>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Пользовательскому интерфейсу все еще нужно немного поработать, но это должно помочь с ротацией элементов.