winform实现PPT展示特效:从网上找的,整理的,这是其中一个特效的代码
#region 压缩反转(改进版)
// 原理:计算图像位置和高度,以高度的一半为轴进行对换上下半边的图像
private void Animator01()
{
const float blockSize = 8; // 每次显示的高度增量,应能被高度整除
try
{
OnDrawStarted(this, EventArgs.Empty); // 触发开始绘制事件
//ClearBackground();
Color bgColor = Color.FromKnownColor(KnownColor.ButtonFace);
RectangleF srcRect = new RectangleF(0, 0, bmp.Width, bmp.Height);
for (float i = (float)Math.Floor(-bmp.Height / blockSize); i <= Math.Ceiling(bmp.Height / blockSize); i++)
{
dc.Clear(bgColor); // 清空DC
float j = i * blockSize / 2;
float destTop = bmp.Height / 2 - j; // 目标矩形的顶位置
// 目标矩形区域在循环的前半段为垂直反向
RectangleF destRect = new RectangleF(0, destTop, bmp.Width, 2 * j);
// 在指定区域绘制图像,该图像被拉伸
dc.DrawImage(bmp, destRect, srcRect, GraphicsUnit.Pixel);
ShowBmp();
Thread.Sleep(10 * delay); // 休眠
}
}
catch (Exception ex)
{
ShowError(ex.Message);
}
finally
{
OnDrawCompleted(this, EventArgs.Empty); // 触发完成绘制事件
}
}
#endregion
1