三维电子无人机倾斜摄影数字沙盘开发第38课 实现简单的粒子效果
三维电子无人机倾斜摄影数字沙盘开发第38课 实现简单的粒子效果
设置system.ini 如下内容
Server=122.112.229.220
user=GisTest
Password=chinamtouch.com
该数据库中只提供 成都市火车南站附近的数据请注意,104.0648,30.61658
利用三方工具,如幻影粒子:
或者flash一类的工具生成如下的PNG序列:
然后下面利 用https://blog.csdn.net/xtgmd168/article/details/85264680 中所介绍的方法。将它变成一个简单的粒子显示元素:
新建一个UserControl完成序列PNG的动态显示:
AmiImage.xaml
<UserControl x:Class="Teach3DGIS.AmiImage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:Teach3DGIS"
mc:Ignorable="d"
Height="450" Width="800">
</UserControl>
AmiImage.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.IO;
namespace Teach3DGIS
{
/// <summary>
/// AmiImage.xaml 的交互逻辑
/// </summary>
public partial class AmiImage : UserControl
{
public AmiImage()
{
InitializeComponent();
}
private List<string> FileList = new List<string>();
private System.Windows.Threading.DispatcherTimer ATimer;
private int index = 0;
public AmiImage(string Path)
{
InitializeComponent();
DirectoryInfo v1 = new DirectoryInfo(Path);
foreach(FileInfo V2 in v1.GetFiles("*.png"))
{
FileList.Add(V2.FullName);
}
ATimer = new System.Windows.Threading.DispatcherTimer();
ATimer.Tick += ATimer_Tick;
ATimer.Interval = new TimeSpan(0, 0, 0, 0,5);
ATimer.Start();
}
private void ATimer_Tick(object sender, EventArgs e)
{
this.Background = new ImageBrush(new BitmapImage(new Uri(FileList[index])));
index++;
if (index == FileList.Count - 1)
index = 0;
}
}
}
主程序中代码如下:
private void Button_Click_9(object sender, RoutedEventArgs e)
{
gis3d.GetJWEvent += Gis3d_GetJWEvent1;
gis3d.State = GisLib.WindowsMT.GisState.获取经纬度;
}
private void Gis3d_GetJWEvent1(System.Windows.Media.Media3D.Point3D value)
{
gis3d.GetJWEvent -= Gis3d_GetJWEvent;
gis3d.State = GisLib.WindowsMT.GisState.漫游;
AmiImage y1 = new AmiImage(AppDomain.CurrentDomain.BaseDirectory + "a");
NewGisBiao.M3D.UserGisUI3dObject2 JuLiSechBiao = new NewGisBiao.M3D.UserGisUI3dObject2(); //新建一个承载UI对象的东东
JuLiSechBiao.PareantEarth = (NewGisBiao.Base.GISInterfaseForBiao)IniRead.IniReadWrite.MPareant;//设置它的GIS球对象
JuLiSechBiao.Manage = IniRead.IniReadWrite.BiaoManage;//设置它的标号管理器
JuLiSechBiao.MaxZoom = 9;//最大显示层,当小于9层的时候不显示
JuLiSechBiao.MUIValue = y1;//UI对象
JuLiSechBiao.DHi = 0.01;//相对于地形的高度
JuLiSechBiao.ZScal = 0.6;//相对缩放
JuLiSechBiao.Scal.ScaleX = 1; //固定东东
JuLiSechBiao.Scal.ScaleY = 1;
JuLiSechBiao.Scal.ScaleZ = 1;
JuLiSechBiao.AutoScal = true;//是否自动缩放,不管在哪一层都是一样大
JuLiSechBiao.AutoAngle = true;//是否自动角度,使终对着摄像机
JuLiSechBiao.CenterType = JunBiao.CenteType.左下角;//中心点类型
IniRead.IniReadWrite.BiaoManage.AddJunBiao(JuLiSechBiao);//增加到军标管理对象中。也可以不加
JuLiSechBiao.MWidth = 250;//三维面片的大小
JuLiSechBiao.MHeight = 150;
JuLiSechBiao.MRX = 90;
if (IniRead.IniReadWrite.MPareant is MTGIS3D) //手动刷新一下自动角度。。。bug
{
((MTGIS3D)IniRead.IniReadWrite.MPareant).TextAxisAngleX.Angle += 0.001;
((MTGIS3D)IniRead.IniReadWrite.MPareant).TextAxisAngleX.Angle -= 0.001;
}
JuLiSechBiao.Center = new Point(value.X, value.Y);//设置中心点
JuLiSechBiao.ISShow = true;//显示
}
效果如下:
当然有一些效果是平贴在地上的,如光圈效果等:如下:
这里很明显就是用了两个对象,两个UI。其中一个UI的autoangle为false再通过调整 MRX MRY 设置一个死的角度就成上面这样了。效果还不错吧。WPF可以让我们尽情的发挥UI的优势
三维电子无人机倾斜摄影数字沙盘开发第38课 实现简单的粒子效果相关推荐
- MR三维电子沙盘虚拟现实数字沙盘开发教程第1课
虚拟现实三维电子沙盘数字沙盘无人机倾斜摄影全景建模开发教程第1课 该数据库中只提供 成都市火车南站附近的数据请注意,104.0648,30.61658 而且该公用服务器带宽不大,所以会有些卡顿,建议下 ...
- 三维电子沙盘数字沙盘开发教程第3课
三维电子沙盘数字沙盘开发教程第3课 下面介绍矢量图层的控制显示:上代码 foreach(string key in gis3d.SetFile.Biao.Keys)// gis3d.SetFile.B ...
- 三维电子沙盘无人机倾斜摄影开发教程第22课
三维电子沙盘无人机倾斜摄影开发教程第22课 gis3d.MapGo(103, 30, 19); //第一次跳转会有点慢,主要是获取数据,如果是用的公网服务器可能会卡一下.第二次就不会了 运行上面的代码 ...
- 三维电子沙盘虚拟数字沙盘开发教程第9课
三维电子沙盘虚拟数字沙盘开发教程第9课 查询面板调用: private void Button_Click_11(object sender, RoutedEventArgs e) { ...
- 三维电子沙盘虚拟数字沙盘开发教程第28课
三维电子沙盘虚拟数字沙盘开发教程第28课 设置system.ini 如下内容 Server=122.112.229.220 user=GisTest Password=chinamtouch.com ...
- 三维电子沙盘AR虚拟现实数字沙盘M3DGIS课程第54课
三维电子沙盘AR虚拟现实数字沙盘M3DGIS课程第54课 无人机倾斜摄影三维全景建模 设置system.ini 如下内容 Server=122.112.229.220 user=GisTest Pas ...
- 交互电子沙盘虚拟数字沙盘开发教程第2课
交互电子沙盘虚拟数字沙盘开发教程第2课 请大家观看学习! 交互电子沙盘虚拟数字沙盘开发教程第2课 三维M3D GIS电子沙盘虚拟数字沙盘培训教程第2课
- 指挥电子沙盘虚拟数字沙盘教程第29课
指挥电子沙盘虚拟数字沙盘教程第29课 在SDK中为了方便三方数据的接入,引入了一个用户层接口.主要是完成三方数据的接入,含动态数据(如GPS),用户可自行控制UI及UI的交互,可实现如滴滴打车的车辆控 ...
- 电子沙盘数字沙盘开发教程第26课:三维数字沙盘M3D GIS导航数据开发代码说明
电子沙盘开发教程第26课:三维数字沙盘M3D GIS导航数据开发代码说明 SDK中自带了一套 导航系统,用的是比较详细的导航数据,你们懂的,修正了一下在使用互联网服务器时候的一个BUG,请在使用这部分 ...
最新文章
- 网络通过猫传输到计算机,事实:计算机直接连接到光猫,无法访问Internet
- JTA 深度历险 - 原理与实现
- 获取元素大小和位置的方式
- 是哪个app_互联网APP创业哪个好
- 从vCenter 6.7升级到7.0
- 华为云用什么吸引 150 万开发者?
- php在浏览器输入路径,关于在sublime text 3 中配置一键浏览器打开php文件,并且是在localhost 本地服务器路径下...
- 使用单链表数据结构存储结构化的学生信息
- mysql gitd 数据结构同步失败_MySQL案例-GTID同步失败:master has purged binary logs
- 条件与循环Phython
- 程序员显示器怎么设置成竖屏
- 产品经理-Axure原型设计-共享停车app
- 学渣的刷题之旅 leetcode刷题 3. 无重复字符的最长子串(暴力法、滑动窗口)
- 【数据结构与算法】课程设计报告
- Jaeger-分布式调用链跟踪系统理论与实战
- [附源码]java毕业设计宠物医院管理系统
- MapGIS基本操作实例(坐标配准、矢量化、统计属性、缓冲分析、属性连接等)
- STM32WB55_FUS升级报错 Firmware not authentic!
- 你所编辑的图文消息可能含有涉嫌不当使用国家机关、国家机关工作人员的名义或形象的表述
- idea maven工程打包jar包