WEB开发网
开发学院软件开发C语言 C#开发WPF/Silverlight动画及游戏系列教程(Game T... 阅读

C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(三十六)地图自定义切片与导出

 2010-09-30 21:01:05 来源:WEB开发网   
核心提示: 在VS设计器中我们仅能看到它们以WinFormHost的描述形式显示,只有在运行时才能看到它们真正的实体内容:那么接下来同样的我们通过绘制Line的方式来绘制切片边线,C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(三十六)地图自定义切片与导出(3),具

在VS设计器中我们仅能看到它们以WinFormHost的描述形式显示,只有在运行时才能看到它们真正的实体内容:

C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(三十六)地图自定义切片与导出

那么接下来同样的我们通过绘制Line的方式来绘制切片边线,具体方法与绘制障碍物边线非常相似,额外再通过一些简单的事件即可实现自定义地图切片设计:

C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(三十六)地图自定义切片与导出

图片看不清楚?请点击这里查看原图(大图)。

上图中灰色虚线为10*10像素单位的障碍物单元格边线,棕红色虚线为250*286像素单位的切片边线,通过NumericUpDown可以非常方便的定义最大值、最小值、有效值及跨越值,并且通过它的ValueChanged事件实现轻松的所见即所得。

设定完切片边线的显示后,最后将根据此切片预览实现真正的地图片导出功能。这里我们可以使FolderBrowserDialog文件夹选择对话框,并配合如下方法来实现此功能:

int sectionXNum = (int)(mapWidth / (double)SectionWidth.Value);
int sectionYNum = (int)(mapHeight / (double)SectionHeight.Value);
for (int x = 0; x < sectionXNum; x++) {
    for (int y = 0; y < sectionYNum; y++) {
         CroppedBitmap croppedBitmap =
new CroppedBitmap(mapSource, new Int32Rect(x * (int)SectionWidth.Value, y * (int)SectionHeight.Value, (int)SectionWidth.Value, (int)SectionHeight.Value));
         System.IO.FileStream fileStream =
 new System.IO.FileStream(string.Format(@"{0}/{1}_{2}.jpg", outputSection.SelectedPath, x, y), System.IO.FileMode.Create);
         JpegBitmapEncoder encoder = new JpegBitmapEncoder();
         encoder.Frames.Add(BitmapFrame.Create(croppedBitmap));
         encoder.Save(fileStream);
         fileStream.Close();
    }
}

上一页  1 2 3 4  下一页

Tags:开发 WPF Silverlight

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接