WPF將圖片旋轉縮放


最近在做一個照片牆的動畫,在網上找了找圖片的縮放和旋轉,總結了一下寫出這篇文章,希望對新手來說有些用處。

cs部分:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfApplication40
{
/// <summary>
/// MainWindow.xaml 的交互邏輯
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void saySomething(string imageURI)
{
Image image = new Image(); 
this.canvas.Children.Add(image); 
image.SetValue(Canvas.LeftProperty,(double)0);
image.SetValue(Canvas.TopProperty, (double)0);
image.Source = new BitmapImage(new Uri(imageURI,UriKind.RelativeOrAbsolute));
RotateTransform angle = new RotateTransform(); //旋轉
ScaleTransform scale = new ScaleTransform(); //縮放
TransformGroup group = new TransformGroup();
group.Children.Add(scale);
group.Children.Add(angle);

image.RenderTransform = group;
image.RenderTransformOrigin = new System.Windows.Point(0.5, 0.5);//定義圓心位置
EasingFunctionBase easeFunction = new PowerEase()
{
EasingMode = EasingMode.EaseInOut,
Power = 2
};
DoubleAnimation scaleAnimation = new DoubleAnimation()
{
From = 1, //起始值
To = 0.5, //結束值
EasingFunction = easeFunction, //緩動函數
Duration = new TimeSpan(0, 0, 0, 5, 0), //動畫播放時間
};
DoubleAnimation angleAnimation = new DoubleAnimation()
{
From = 0, //起始值
To = 360, //結束值
EasingFunction = easeFunction, //緩動函數
Duration = new TimeSpan(0, 0, 0, 5, 0), //動畫播放時間
};
scale.BeginAnimation(ScaleTransform.ScaleXProperty, scaleAnimation);
scale.BeginAnimation(ScaleTransform.ScaleYProperty, scaleAnimation);
angle.BeginAnimation(RotateTransform.AngleProperty, angleAnimation);
}

private void Button_Click(object sender, RoutedEventArgs e)
{
saySomething("/phono.png");
}
}
}

 

XAML代碼:

<Window x:Class="WpfApplication40.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApplication40"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Canvas x:Name="canvas">
<Button Height="50" Width="70" Canvas.Left="13" Canvas.Top="261" Content="image" Click="Button_Click"/>
</Canvas>
</Grid>
</Window>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM