C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(十七) 完美精灵之八面玲珑(WPF Only)①
2009-06-27 07:08:07 来源:WEB开发网图片看不清楚?请点击这里查看原图(大图)。
尺寸规格统一好以后,接下来还需要对所有图片进行微调(可想而知,游戏制作中对美工人数的需求是极其庞大的。就如我在前面章节中说到的,游戏开发的成功,极大幅度取决于美工,程序逻辑方面仅位列游戏需求分析、界面地图美术设计之后排在第三)。所谓微调,就是将角色的各帧图片通过测试工具让它运动起来(如第四节、第五节中的方法),然后观察每帧图片重叠起来位置是否吻合,不吻合的则需要通过Photoshop进行微调,使它上面的角色处于图片正确的位置上(如下图则为错误的叠加,我们必须将所有帧图片完全对齐,这样连续切换的时候才能不漏破绽):
至此就完成了素材准备阶段。一切就绪后,接下来的工作就是将主角8方向5动作的所有帧图片(本例子中的272张)进行处理,最终合成一张将这所有图片按一定规律排列的8方向5动作整合图。就以这272张图片为例,如何使用WPF类库中的方法将它们合并为一张图片呢?来看本节的第一个精华ComposeImage()方法:
/// <summary>
/// 将N帧图片合成一张8方向角色各动作分布图
/// </summary>
/// <param name="SourcePath">源文件路径</param>
/// <param name="SavaToPath">保存文件到目标路径</param>
/// <param name="imgnum">源图片数量</param>
/// <param name="imgwidth">单位图片宽</param>
/// <param name="imgheight">单位图片高</param>
public static void ComposeImage(string SourcePath, string SavaToPath, int imgNum, int imgWidth, int imgHeight) {
System.IO.FileStream fileStream = new System.IO.FileStream(SavaToPath, System.IO.FileMode.Create);
DrawingVisual drawingVisual = new DrawingVisual();
DrawingContext drawingContext = drawingVisual.RenderOpen();
int count = 1;
for (int i = 0; i < 8; i++) {
for (int j = 0; j < imgNum / 8; j++) {
drawingContext.DrawImage(new BitmapImage(new Uri(SourcePath + count + "-1.png")), new Rect(j * imgWidth, i * imgHeight, imgWidth, imgHeight));
count += 1;
}
}
drawingContext.Close();
RenderTargetBitmap renderTargetBitmap = new RenderTargetBitmap((imgNum / 8) * imgWidth, 8 * imgHeight, 0, 0, PixelFormats.Pbgra32);
renderTargetBitmap.Render(drawingVisual);
PngBitmapEncoder encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(renderTargetBitmap));
encoder.Save(fileStream);
fileStream.Close();
}
Tags:开发 WPF Silverlight
编辑录入:爽爽 [复制链接] [打 印]- ››开发Android 日历教程
- ››开发学院总结 Win 8实用技巧大全
- ››开发学院原创教程:把win8的IE10放桌面上方法(非...
- ››silverlight全屏显示图片
- ››Silverlight MVVM 模式(一) 切近实战
- ››开发者眼中的Windows Phone和Android
- ››开发学院教你用SQL 语句最快速清空MySQL 数据表的...
- ››WPF学习笔记12. Binding (5)
- ››WPF学习笔记11. Binding (4)
- ››WPF学习笔记10. Binding (3)
- ››WPF学习笔记9. Binding (2)
- ››WPF学习笔记8. Binding
更多精彩
赞助商链接