核心代码如下
效果如下
public Bitmap picRotate(Bitmap bmp, int angle)
{
//转载请保留http://www.luofenming.com/show.aspx?id=ART2019112900001
Bitmap reBmp = new Bitmap(bmp.Width, bmp.Height);
Graphics g = Graphics.FromImage(reBmp);
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;//选择模式
g.TranslateTransform((float)bmp.Width / 2, (float)bmp.Height / 2); //参数为旋转中心
g.RotateTransform(angle);//设置旋转角度
g.TranslateTransform(-(float)bmp.Width / 2, -(float)bmp.Height / 2);
g.DrawImage(bmp, new Point(0, 0));
return reBmp;//返回旋转后的图片
}
public void Transform()
{
Bitmap bmp = new Bitmap(Resources.动效2);
pictureBox1.BackgroundImage = bmp;
Bitmap bmp1 = new Bitmap(Resources.动效4);//bmp即为我们的原型图片
pictureBox2.BackgroundImage = bmp1;//将图片作为picturebox背景,方便展示
this.BeginInvoke((EventHandler)(delegate
{
pictureBox2.Parent = pictureBox1;//在box1上显示Box2
}));
int angle = 0;
int angle1 = 360;
while (true)
{
this.BeginInvoke((EventHandler)(delegate
{
pictureBox1.BackgroundImage = picRotate(bmp, angle);//将旋转后的图片设置为picturebox1背景
}));
angle += 15;//每次增加5度
if (angle >= 360)
{
angle = 0;
}
this.BeginInvoke((EventHandler)(delegate
{
pictureBox2.BackgroundImage = picRotate(bmp1, angle1);//将旋转后的图片设置为picturebox2背景
}));
angle1 -= 15;//每次减5度
if (angle1 <= 0)
{
angle1 = 360;
}
Thread.Sleep(50);
}
}
/// <summary>
/// 调用
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
Thread th = new Thread(Transform);
th.IsBackground = true;
th.Start();
}
实例源码下载地址:https://pan.baidu.com/s/1Wfzd3BgvgzgERMRqWhWQew 提取码:ivuv效果如下