アイテムを回転させるには、Transformsを使用する必要があります。このケースで最も関連性のあるものは、Rotate Transformです。またランダムな散らばった外観を与えるために、ObjectDataProviderを使用して、他の角度を生成することができます。
私はVBは分かりませんが、これに関わる唯一のC#は非常に簡単で、簡単に転送できるはずです。
イメージリソースパスに簡単に切り替えることができる、色のような簡単なものを使用できます。ここでは、Colorsの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>
UIはまだそこから少しの作業が必要ですが、それはアイテムのローテーションに役立つはずです。