首页 > 其他分享 >TE二次开发中的画圆

TE二次开发中的画圆

时间:2022-09-27 23:32:55浏览次数:66  
标签:iworldpoint 鼠标 iworldpoint2 画圆 icircle 二次开发 Position TE sgworld

在TE的二次开发中,有时会用到画圆标示一个范围,圆的半径根据鼠标移动而变化,跟直接使用TE画一个圆的效果相同。

这需要定义TE二次开发中的鼠标点击等事件,以下是详细的画法代码。

//定义鼠标左键事件
sgworld.OnLButtonUp += sgworld_OnLButtonUp;
//定义鼠标右键事件
sgworld.OnRButtonUp += sgworld_OnRButtonUp;
//定义实时监测事件
sgworld.OnFrame += sgworld_OnFrame;

bool sgworld_OnLButtonUp(int Flags, int X, int Y)
{
if (icircle == null)
{
//在对象为空的情况下,先在鼠标第一次点击的地方画一个圆
//鼠标点击位置的坐标获取
iworldpoint = this.sgworld.Window.PixelToWorld(X, Y, WorldPointType.WPT_TERRAIN);
iposition = iworldpoint.Position;
iposition.AltitudeType = AltitudeTypeCode.ATC_ON_TERRAIN;
//创建一个圆
icircle = sgworld.Creator.CreateCircle(iposition, x, "", sgworld.Creator.CreateColor(fillcolor.R, fillcolor.G, fillcolor.B, fillcolor.A), groupid, "Circle");
icircle.NumberOfSegments = 25;
return true;
}
else
{
//在已经画上圆,根据鼠标现在的位置计算圆的半径
iworldpoint2 = this.sgworld.Window.PixelToWorld(X, Y, WorldPointType.WPT_TERRAIN);
//数据鼠标摆放的位置,计算距离
x = sgworld.CoordServices.GetDistance(iworldpoint.Position.X, iworldpoint.Position.Y, iworldpoint2.Position.X, iworldpoint2.Position.Y);
icircle.Radius = x;
icircle = null;
return true;
}
return false;
}
//实时监测事件
void sgworld_OnFrame()
{
//判断圆对象不为空的情况
if(icircle!=null)
{
//获得鼠标的信息
moseinfo = this.sgworld.Window.GetMouseInfo();
iworldpoint2 = this.sgworld.Window.PixelToWorld(moseinfo.X,moseinfo.Y,WorldPointType.WPT_TERRAIN);
//计算距离
x = sgworld.CoordServices.GetDistance(iworldpoint.Position.X, iworldpoint.Position.Y, iworldpoint2.Position.X, iworldpoint2.Position.Y);
icircle.Radius = x;
}
}
//鼠标右键事件
bool sgworld_OnRButtonUp(int Flags, int X, int Y)
{
//常用的一些画完结束事件
return false;
}

标签:iworldpoint,鼠标,iworldpoint2,画圆,icircle,二次开发,Position,TE,sgworld
From: https://blog.51cto.com/speciallist/5717783

相关文章

  • English words chapter 20220927
    ......
  • Semi-supervised New Event Type Induction and Event Detection
    Motivation手动构造事件类型和标注数据成本非常高手动标注的时间覆盖率比较低Method本文提出了一个基于VQ-VAE的半监督事件检测方法。TriggerRepresentationLear......
  • Java: Command Patterns
     /***版权所有2022涂聚文有限公司*许可信息查看:*描述:*命令模式CommandPatterns*历史版本:JDK14.02*2022-09-12创建者geovindu*2022-09-12......
  • 是时候优雅地和NullPointException说再见了
    大家好,又见面了。NullPointException应该算是每一个码农都很熟悉的家伙了吧?谁的代码不曾抛过几个空指针异常呢...比如:你写了段如下的代码:publicvoidgetCompanyFromEmp......
  • 编码中的Adapter,不仅是一种设计模式,更是一种架构理念与解决方案
    大家好,又见面了。不知道下面这玩意大家有没有见过或者使用过?这是一个插座转换器。我们都知道日常使用的是220v的交流电,而国外不同国家使用的电流电压是不一样的(比如日本使......
  • Test 2022.09.27
    今天不知道是什么专场了,但是我知道的是我今天真的没有改完!!!!太气了,最短路的赋值号写成大于竟然不会报错,害得我改了半个下午一个晚上,lz快要崩溃了T1Windy数简简单单数位dp,......
  • golang map 和 interface 的一些记录
    golang的map读取是不需要判断key是否存在的,不存在的key会返回默认值。如果map的value是interface,那么interface是需要先进行类型转换的,非要求类型的转换,得到结果是nil。......
  • AtCoder Beginner Contest 266
    AtCoder五十连练第三练AtCoderBeginnerContest266D-SnukePanic(1D)高桥正试图抓住许多Snuke。有五个坑在坐标\(0,1,2,3,4\)号线,连接到Snuke的巢。现在,\(......
  • Java使用ProtoBuffer3时报错: Cannot resolve method 'isStringEmpty' in 'GeneratedM
    错误描述我的机器是MacM1,项目中使用了ProtoBuffer3。使用protoc程序,根据proto文件生成了Java代码。在编译Java项目的时候,报错:cannotresolvemethod'isstringempty'in......
  • 洛谷 P7774 [COCI2009-2010#2] KUTEVI(DP:完全背包)
    https://www.luogu.com.cn/problem/P7774题目大意:给定n个已知角度a[1],a[2],,,a[n];给定m个需要我们去拼凑的角度b[1],b[2],,,b[m];数组a中的角度可以使用任意多次,从......