• PIE SDK云图动画导出


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

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

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

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

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

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

     1 /// <summary>
     2 /// 云图动画导出GIF
     3 /// </summary>
     4 /// <param name="sender"></param>
     5 /// <param name="e"></param>
     6 private void tbn_Export2GIF_Click(object sender, EventArgs e)
     7 {
     8     if (m_AnimationLayer.GetAnimationState() != 1 && m_AnimationLayer == null) return;
     9     //1、设置保存GIF的路径                   
    10     if (!this.Enabled) return;
    11     SaveFileDialog saveFileDialog = new SaveFileDialog();
    12     saveFileDialog.Title = "请选择保存路径";
    13     saveFileDialog.Filter = "GIF Files|*.gif;";
    14     if (saveFileDialog.ShowDialog() != System.Windows.Forms.DialogResult.OK) return;
    15     string filePath = saveFileDialog.FileName;
    16 
    17     DevExpress.Utils.WaitDialogForm waitDialogForm = new DevExpress.Utils.WaitDialogForm("正在生成GIF动画,请耐心等候……", "生成GIF");
    18 
    19     //2、将每一帧图都以png的格式保存在临时文件夹下
    20     string filePath_D = Path.Combine(@"..DataTempPic", DateTime.Now.ToString("yyyyMMddhhmmss"));
    21     Directory.CreateDirectory(filePath_D);
    22     Export2PicSilent(filePath_D);
    23 
    24     //3、将临时文件夹下的每一帧图片保存成GIF格式
    25     string[] filePaths = Directory.GetFiles(filePath_D);
    26     Parames_GeneralGIF para = new Parames_GeneralGIF();
    27     para.WaitDialogFormA = waitDialogForm;
    28     para.PicPaths = filePaths;
    29     para.GIFPath = filePath;
    30     GeneralGif(para);
    31 }
    32 
    33 /// <summary>
    34 /// 将每一帧动画保存为png图
    35 /// </summary>
    36 /// <param name="folder">存放图片的文件夹</param>
    37 public void Export2PicSilent(string folder)
    38 {
    39     if (mapControlMain == null) return;
    40     m_AnimationLayer.Stop();
    41     Image image = null;
    42     for (int i = 0; i <= m_AnimationLayer.LayerCount - 1; i++)
    43     {
    44         m_AnimationLayer.SetCurrentFrameIndex(i);
    45         mapControlMain.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
    46         System.Threading.Thread.Sleep(100);
    47         image = mapControlMain.GetScreenshot();
    48         image.Save(folder + "\" + i + ".png");
    49     }
    50     m_AnimationLayer.Start();
    51 }
    52 
    53 /// <summary>
    54 /// 将帧图片生成GIF
    55 /// </summary>
    56 /// <param name="param"></param>
    57 public void GeneralGif(object param)
    58 {
    59     if (param == null) return;
    60     Parames_GeneralGIF param_GeneralGIF = param as Parames_GeneralGIF;
    61     if (param_GeneralGIF == null) return;
    62 
    63     //生成gif图片实例化
    64     Gif.Components.AnimatedGifEncoder gifEncoder = new Gif.Components.AnimatedGifEncoder();
    65     gifEncoder.Start(param_GeneralGIF.GIFPath);
    66     gifEncoder.SetDelay(300);//每帧播放时间
    67     gifEncoder.SetRepeat(0); //-1:不重复,0:重复
    68 
    69     for (int i = 0; i < param_GeneralGIF.PicPaths.Length; i++)
    70     {
    71         gifEncoder.AddFrame(System.Drawing.Image.FromFile(param_GeneralGIF.PicPaths[i]));
    72     }
    73     gifEncoder.Finish();
    74     param_GeneralGIF.WaitDialogFormA.Invoke(new Action(() =>
    75     {
    76         param_GeneralGIF.WaitDialogFormA.Close();
    77     }));
    78 }

    代码路径:

    项目名称

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

    数据路径

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

    视频路径

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

    注意:

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

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

    效果图: 

     

     

  • 相关阅读:
    网站名记录
    Unity 之 图片显示的真实大小
    Unity 之 Time
    数据库死锁分析与解决
    使用命令远程注销服务器
    Web自动化测试框架改进
    Tomcat 性能监控及调优
    移动互联网安全性测试技术简介
    白盒测试中如何实现真正意义上并发测试(Java)
    接口性能测试方案 白皮书 V1.0
  • 原文地址:https://www.cnblogs.com/PIESat/p/10307409.html
Copyright © 2020-2023  润新知