C# 在Xaml中添加图像集合
我想在Windows应用商店的XAML页面上绘制图像。 主要目标是: 将图像(例如,花叶)添加到中心的圆圈中,如下所示: 我有一个简单的解决方案,但它是非常多余的C# 在Xaml中添加图像集合,c#,.net,image,xaml,windows-store-apps,C#,.net,Image,Xaml,Windows Store Apps,我想在Windows应用商店的XAML页面上绘制图像。 主要目标是: 将图像(例如,花叶)添加到中心的圆圈中,如下所示: 我有一个简单的解决方案,但它是非常多余的 <Image Height="200" Width="200" Source="{Binding ActualImage.NormalUri}"> <Image.RenderTransform> <RotateTransform Angle="12"></Rotate
<Image Height="200" Width="200" Source="{Binding ActualImage.NormalUri}">
<Image.RenderTransform>
<RotateTransform Angle="12"></RotateTransform>
</Image.RenderTransform>
</Image>
... // And 28 other like these
<Image Height="200" Width="200" Source="{Binding ActualImage.NormalUri}">
<Image.RenderTransform>
<RotateTransform Angle="360"></RotateTransform>
</Image.RenderTransform>
</Image>
... // 还有28个像这样的
如何使用图像集合的绑定来实现这一点?我应该使用什么XAML控件?使用从
ItemsControl
继承的自定义类。然后可以替代必要的功能,例如用于确定每个项目之间旋转的角度的功能。我认为您可能希望为此使用此PrepareContainerForItemOverride
需要注意的一点是,您必须定义一个新的ItemsPanel
。默认设置为堆叠面板
,该面板将不起作用。您可能希望使用类似于画布的东西,它允许您显式地在其中定位项目。Nate Diamond的解决方案更好更好,但我从代码隐藏中解决了它,以获得更简单的方法:
foreach (Petal petalObject in MainPageViewModel.Petals)
{
var petalImage = new Image
{
Height = petalObject.Height,
Width = petalObject.Width,
RenderTransform = new RotateTransform() {Angle = petalObject.Angle},
Source = new BitmapImage(new Uri(petalObject.NormalUri)),
};
PetalsGrid.Children.Add(petalImage);
}