在屏幕上任何位置放置随机角度旋转的几张图片,通过手势我们可以对图片进行拖放。
界面布局
<Grid >
<Grid.Background>
<ImageBrush Stretch="Fill" ImageSource="Pictures/背景.jpg"/>
</Grid.Background>
<TextBlock HorizontalAlignment="Left" Margin="47,40,0,0" TextWrapping="Wrap"
Text="图片拖放练习" VerticalAlignment="Top" Height="89" Width="712" FontSize="48"/>
<Canvas x:Name="myCanvas"/>
</Grid>
在MainPage的构造函数中添加代码
public MainPage()
{
this.InitializeComponent();
//图片集合
List<Image> images = new List<Image>();
Image image = new Image();
image.Source = new BitmapImage(new Uri("ms-appx:///Pictures/草莓.jpg"));
images.Add(image);
image = new Image();
image.Source = new BitmapImage(new Uri("ms-appx:///Pictures/橙子.jpg"));
images.Add(image);
image = new Image();
image.Source = new BitmapImage(new Uri("ms-appx:///Pictures/樱桃.jpg"));
images.Add(image);
//生成随机树
Random random = new Random();
foreach (Image img in images)
{
Border border = new Border();
CompositeTransform compositeTransform = new CompositeTransform();
img.Stretch = Stretch.Fill;
img.ManipulationMode = ManipulationModes.All;
compositeTransform.Rotation = (double)random.Next();
compositeTransform.TranslateX = (double)random.Next(300, 800);
compositeTransform.TranslateY = (double)random.Next(200, 400);
border.RenderTransform = compositeTransform;
border.BorderBrush = new SolidColorBrush(Colors.Orange);
border.BorderThickness = new Thickness(3);
border.Width = 200;
border.Height = 150;
border.Child = img;
border.ManipulationDelta += border_ManipulationDelta;
myCanvas.Children.Add(border);
}
/// <summary>
/// ManipulationDelta事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void border_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
{
CompositeTransform imageTransform = (CompositeTransform)((Border)sender).RenderTransform;
imageTransform.Rotation += e.Delta.Rotation;
imageTransform.TranslateX += e.Delta.Translation.X;
imageTransform.TranslateY += e.Delta.Translation.Y;
imageTransform.ScaleX *= e.Delta.Scale;
imageTransform.ScaleY *= e.Delta.Scale;
}