是的,C# 的 DrawImage
方法本身不能直接實現圖像旋轉動畫。但是,你可以通過組合多個圖像并在每一幀上旋轉它們來實現旋轉動畫。以下是一個簡單的示例,展示了如何使用 DrawImage
和 Graphics
類在 C# 中創建一個旋轉動畫:
using System;
using System.Drawing;
using System.Windows.Forms;
public class RotationAnimation : Form
{
private Timer timer;
private Image originalImage;
private Image rotatedImage;
private float angle = 0;
public RotationAnimation()
{
originalImage = Image.FromFile("path/to/your/image.png");
rotatedImage = new Bitmap(originalImage.Width, originalImage.Height);
Graphics g = Graphics.FromImage(rotatedImage);
g.DrawImage(originalImage, 0, 0);
g.Dispose();
timer = new Timer();
timer.Interval = 50; // 每 50 毫秒更新一次圖像
timer.Tick += Timer_Tick;
timer.Start();
}
private void Timer_Tick(object sender, EventArgs e)
{
angle += 1;
if (angle >= 360)
{
angle = 0;
}
using (Graphics g = Graphics.FromImage(rotatedImage))
{
g.Clear();
g.DrawImage(originalImage, 0, 0);
g.RotateTransform((float)angle);
g.DrawImage(rotatedImage, 0, 0);
}
this.Invalidate();
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
e.Graphics.DrawImage(rotatedImage, this.ClientRectangle);
}
[STAThread]
public static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new RotationAnimation());
}
}
這個示例中,我們創建了一個名為 RotationAnimation
的窗體類,它包含一個定時器和一個圖像對象。定時器的間隔設置為 50 毫秒,每次觸發時,圖像的角度會增加 1 度。當角度達到 360 度時,它會重置為 0 度。在 OnPaint
方法中,我們將旋轉后的圖像繪制到窗體上。