PIE SDK云图动画导出
云图动画,就是将一组序列图以动画的形式进行轮播,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云图动画导出的更多相关文章
- 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 ...
- PIE SDK Command&&Tool工具命令一览表
PIE SDK Command&&Tool工具命令一览表 编号 模板 名称(中文) Command&Tool 程序集 备注 1 数据管理 加载栅格数据 PIE.Controls ...
- PIE SDK地图图层渲染方案管理
1. 功能简介 在数据种类较多.渲染规则复杂的情况下,逐个设置其渲染方式是一件繁琐的工作.PIE SDK提供了一种省力省心的办法, PIE SDK提供栅格和矢量数据渲染方案的打开与保存.能够将配色方案 ...
- PIE SDK元素的保存与打开
1.功能简介 绘制元素之后需要对元素进一步的保存操作,可以利用PIE SDK的ExportElementsCommand命令保存成xml格式的文件,打开元素可以利用ImportElementsComm ...
- PIE SDK 距离分类和最大似然分类
1.算法功能简介 监督分类,也叫训练场地法.训练分类法,是遥感图像分类的一种,用被确认类别的样本像元去识别其他未知类别像元的过程.监督分类算法有平行算法.平行六面体法.最小距离法.最大似然法.马 ...
- PIE SDK与OpenCV结合说明文档
1.功能简介 OpenCV是基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows.Android和Mac OS操作系统上.它轻量级而且高效——由一系列 C 函数和少量 ...
- PIE SDK影像坏线修复
1.算法功能简介 坏条带的由来:2003年5月31日,Landsat-7ETM+机载扫描行校正器(SLC) 故障,导致此后获取的影像出现了数据条带丢失,严重影响了Landsat ETM遥感影像的使用. ...
- PIE SDK与GeoServer结合说明文档
1. GeoServer简介 GeoServer是OpenGIS Web服务器规范的J2EE实现的社区开源项目,利用GeoServer可以方便的发布地图数据,允许用户对特征数据进行更新.删除.插入操 ...
- PIE SDK组件式开发综合运用示例
1. 功能概述 关于PIE SDK的功能开发,在我们的博客上已经分门别类的进行了展示,点击PIESat博客就可以访问,为了初学者入门,本章节将对从PIE SDK组件式二次开发如何搭建界面.如何综合开发 ...
随机推荐
- float在内存中的存取方法
今天做了一些题目,想到float数据如何在内存中的形式.不知道一个浮点数是如何存成32位01字符串的.下面是查找的一些资料. 我们先通过java获取这些数的二进制表示. public class De ...
- 通过批处理操作注册表实现winform应用中Webbrowser以指定的IE版本加载网页
通过批处理操作注册表实现winform应用中Webbrowser以指定的IE版本加载网页 rem 强制WebBrowser控件使用指定IE版本显示应用的网页 IF EXIST %windir%\Sys ...
- HttpRuntime.Cache
a.在Web开发中,我们经常能够使用到缓存对象(Cache),在ASP.NET中提供了两种缓存对象,HttpContext.Current.Cache和HttpRuntime.Cache,那么他们有什 ...
- canvas基本绘制图形
canvas H5新增的元素,提供了强大的图形的绘制,变换,图片,视频的处理等等.需要使用JavaScript脚本操作 浏览器支持 大多数的现代浏览器都可以支持:IE8以下的浏览器不支持 画布 可支持 ...
- 匿名函数和lamda表达式
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- 用JS实现表格的高亮显示
1.所用事件详解 2.<thead>,<tbody>标签介绍 <thead> 标签定义表格的表头.该标签用于组合 HTML 表格的表头内容. thead 元素应该与 ...
- 【SQL】- 基础知识梳理(一) - 数据库
一.引言 知识分享这个事情在公司会议上被提出过几次,可一直因各种事情耽搁下来,“我不如地狱,谁入地狱”,怀着这样一种心态,写下了 数据库系列知识分享. 本文将一步步通过循序渐进的方式带你去了解数据库. ...
- 独立线程监控配置文件是否变更,适用于更新了配置文件,不需要重启tomcat服务
直接贴出来代码: package cn.leadeon.utils.file; import java.io.File; import java.io.FileInputStream; import ...
- bitest(位集合)------c++程序设计原理与实践(进阶篇)
标准库模板类bitset是在<bitset>中定义的,它用于描述和处理二进制位集合.每个bitset的大小是固定的,在创建时指定: bitset<4> flags; bitse ...
- 【leetcode 138. 复制带随机指针的链表】解题报告
方法一:递归 unordered_map<Node*,Node*> dict; Node* copyRandomList(Node* head) { if (!head) return h ...