云图动画,就是将一组序列图以动画的形式进行轮播,PIE SDK可以将云图动画以gif或avi格式进行导出,本文示例以云图动画导出gif为例,这样只需要点开gif文件就可以浏览云图动画。

下面来介绍下实现的主要代码:

要实现云图动画导出GIF步骤:

1、加载序列时数据(可以查看打开长时间序列数据

2、如何将云图动画导出GIF文件;

云图动画由一帧帧的画面组合,也即是加载的序列图的图层数,将云图动画导出GIF,主要是先将每一帧画面保存为图片的格式,本文选择png格式,然后将保存完的图片通过第三方插件Gif.Components.dll生成GIF文件

 /// <summary>
/// 云图动画导出GIF
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void tbn_Export2GIF_Click(object sender, EventArgs e)
{
if (m_AnimationLayer.GetAnimationState() != && m_AnimationLayer == null) return;
//1、设置保存GIF的路径
if (!this.Enabled) return;
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Title = "请选择保存路径";
saveFileDialog.Filter = "GIF Files|*.gif;";
if (saveFileDialog.ShowDialog() != System.Windows.Forms.DialogResult.OK) return;
string filePath = saveFileDialog.FileName; DevExpress.Utils.WaitDialogForm waitDialogForm = new DevExpress.Utils.WaitDialogForm("正在生成GIF动画,请耐心等候……", "生成GIF"); //2、将每一帧图都以png的格式保存在临时文件夹下
string filePath_D = Path.Combine(@"..\Data\Temp\Pic", DateTime.Now.ToString("yyyyMMddhhmmss"));
Directory.CreateDirectory(filePath_D);
Export2PicSilent(filePath_D); //3、将临时文件夹下的每一帧图片保存成GIF格式
string[] filePaths = Directory.GetFiles(filePath_D);
Parames_GeneralGIF para = new Parames_GeneralGIF();
para.WaitDialogFormA = waitDialogForm;
para.PicPaths = filePaths;
para.GIFPath = filePath;
GeneralGif(para);
} /// <summary>
/// 将每一帧动画保存为png图
/// </summary>
/// <param name="folder">存放图片的文件夹</param>
public void Export2PicSilent(string folder)
{
if (mapControlMain == null) return;
m_AnimationLayer.Stop();
Image image = null;
for (int i = ; i <= m_AnimationLayer.LayerCount - ; i++)
{
m_AnimationLayer.SetCurrentFrameIndex(i);
mapControlMain.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
System.Threading.Thread.Sleep();
image = mapControlMain.GetScreenshot();
image.Save(folder + "\\" + i + ".png");
}
m_AnimationLayer.Start();
} /// <summary>
/// 将帧图片生成GIF
/// </summary>
/// <param name="param"></param>
public void GeneralGif(object param)
{
if (param == null) return;
Parames_GeneralGIF param_GeneralGIF = param as Parames_GeneralGIF;
if (param_GeneralGIF == null) return; //生成gif图片实例化
Gif.Components.AnimatedGifEncoder gifEncoder = new Gif.Components.AnimatedGifEncoder();
gifEncoder.Start(param_GeneralGIF.GIFPath);
gifEncoder.SetDelay();//每帧播放时间
gifEncoder.SetRepeat(); //-1:不重复,0:重复 for (int i = ; i < param_GeneralGIF.PicPaths.Length; i++)
{
gifEncoder.AddFrame(System.Drawing.Image.FromFile(param_GeneralGIF.PicPaths[i]));
}
gifEncoder.Finish();
param_GeneralGIF.WaitDialogFormA.Invoke(new Action(() =>
{
param_GeneralGIF.WaitDialogFormA.Close();
}));
}

代码路径:

项目名称

百度云盘地址下/PIE示例程序/13.小工具集锦/云图动画导出/AnimationLayerExportToGIF

数据路径

百度云盘地址下/PIE示例数据/栅格数据/05.长时间序列数据

视频路径

百度云盘地址下/PIE视频教程/13.小工具集锦/云图动画导出.avi

注意:

在地图初始化的时候,图层树控件需要手动绑定地图控件:

tocControlMain.SetBuddyControl(mapControlMain as PIE.Carto.IPmdContents);

效果图:

PIE SDK云图动画导出的更多相关文章

  1. PIE SDK 文章目录索引

    1.PIE SDK介绍 1.1.  PIE软件介绍 1.2.  PIE SDK介绍 1.3.  PIE支持项目介绍 1.4.  PIE.NET-SDK插件式二次开发介绍 1.5.  PIE.NET-S ...

  2. PIE SDK Command&&Tool工具命令一览表

    PIE SDK Command&&Tool工具命令一览表 编号 模板 名称(中文) Command&Tool 程序集 备注 1 数据管理 加载栅格数据 PIE.Controls ...

  3. PIE SDK地图图层渲染方案管理

    1. 功能简介 在数据种类较多.渲染规则复杂的情况下,逐个设置其渲染方式是一件繁琐的工作.PIE SDK提供了一种省力省心的办法, PIE SDK提供栅格和矢量数据渲染方案的打开与保存.能够将配色方案 ...

  4. PIE SDK元素的保存与打开

    1.功能简介 绘制元素之后需要对元素进一步的保存操作,可以利用PIE SDK的ExportElementsCommand命令保存成xml格式的文件,打开元素可以利用ImportElementsComm ...

  5. PIE SDK 距离分类和最大似然分类

       1.算法功能简介 监督分类,也叫训练场地法.训练分类法,是遥感图像分类的一种,用被确认类别的样本像元去识别其他未知类别像元的过程.监督分类算法有平行算法.平行六面体法.最小距离法.最大似然法.马 ...

  6. PIE SDK与OpenCV结合说明文档

    1.功能简介 OpenCV是基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows.Android和Mac OS操作系统上.它轻量级而且高效——由一系列 C 函数和少量 ...

  7. PIE SDK影像坏线修复

    1.算法功能简介 坏条带的由来:2003年5月31日,Landsat-7ETM+机载扫描行校正器(SLC) 故障,导致此后获取的影像出现了数据条带丢失,严重影响了Landsat ETM遥感影像的使用. ...

  8. PIE SDK与GeoServer结合说明文档

    1.  GeoServer简介 GeoServer是OpenGIS Web服务器规范的J2EE实现的社区开源项目,利用GeoServer可以方便的发布地图数据,允许用户对特征数据进行更新.删除.插入操 ...

  9. PIE SDK组件式开发综合运用示例

    1. 功能概述 关于PIE SDK的功能开发,在我们的博客上已经分门别类的进行了展示,点击PIESat博客就可以访问,为了初学者入门,本章节将对从PIE SDK组件式二次开发如何搭建界面.如何综合开发 ...

随机推荐

  1. float在内存中的存取方法

    今天做了一些题目,想到float数据如何在内存中的形式.不知道一个浮点数是如何存成32位01字符串的.下面是查找的一些资料. 我们先通过java获取这些数的二进制表示. public class De ...

  2. 通过批处理操作注册表实现winform应用中Webbrowser以指定的IE版本加载网页

    通过批处理操作注册表实现winform应用中Webbrowser以指定的IE版本加载网页 rem 强制WebBrowser控件使用指定IE版本显示应用的网页 IF EXIST %windir%\Sys ...

  3. HttpRuntime.Cache

    a.在Web开发中,我们经常能够使用到缓存对象(Cache),在ASP.NET中提供了两种缓存对象,HttpContext.Current.Cache和HttpRuntime.Cache,那么他们有什 ...

  4. canvas基本绘制图形

    canvas H5新增的元素,提供了强大的图形的绘制,变换,图片,视频的处理等等.需要使用JavaScript脚本操作 浏览器支持 大多数的现代浏览器都可以支持:IE8以下的浏览器不支持 画布 可支持 ...

  5. 匿名函数和lamda表达式

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  6. 用JS实现表格的高亮显示

    1.所用事件详解 2.<thead>,<tbody>标签介绍 <thead> 标签定义表格的表头.该标签用于组合 HTML 表格的表头内容. thead 元素应该与 ...

  7. 【SQL】- 基础知识梳理(一) - 数据库

    一.引言 知识分享这个事情在公司会议上被提出过几次,可一直因各种事情耽搁下来,“我不如地狱,谁入地狱”,怀着这样一种心态,写下了 数据库系列知识分享. 本文将一步步通过循序渐进的方式带你去了解数据库. ...

  8. 独立线程监控配置文件是否变更,适用于更新了配置文件,不需要重启tomcat服务

    直接贴出来代码: package cn.leadeon.utils.file; import java.io.File; import java.io.FileInputStream; import ...

  9. bitest(位集合)------c++程序设计原理与实践(进阶篇)

    标准库模板类bitset是在<bitset>中定义的,它用于描述和处理二进制位集合.每个bitset的大小是固定的,在创建时指定: bitset<4> flags; bitse ...

  10. 【leetcode 138. 复制带随机指针的链表】解题报告

    方法一:递归 unordered_map<Node*,Node*> dict; Node* copyRandomList(Node* head) { if (!head) return h ...