var PolyLine = null;
//绑定自定义鼠标事件
function selectid() {
SGWorld.AttachEvent("OnLButtonDown", DrawPolyLButtonDown);
SGWorld.AttachEvent("OnRButtonUp", EndPolyLine);
SGWorld.AttachEvent("OnFrame", DrawPolyLOnFrame);
SGWorld.Window.SetInputMode(1);
}
//解绑事件
function EndPolyLine(Flags, X, Y) {
SGWorld.DetachEvent("OnLButtonDown", DrawPolyLButtonDown);
SGWorld.DetachEvent("OnRButtonUp", EndPolyLine);
SGWorld.DetachEvent("OnFrame", DrawPolyLOnFrame);
PolyLine = null;
SGWorld.Window.SetInputMode(0);
}
//鼠标左键点击绘制
function DrawPolyLButtonDown(Flags, X, Y) {
var linecolor = SGWorld.Creator.CreateColor(255, 0, 0, 125);
try {
var cpos = SGWorld.Window.pixelToWorld(X, Y);
if (cpos == null) return false;
var pos = cpos.Position;
if (!PolyLine) {
var geometry = SGWorld.Creator.GeometryCreator.CreateLineStringGeometry([pos.X, pos.Y, 0, pos.X, pos.Y, 0]);
PolyLine = SGWorld.Creator.CreatePolyline(geometry, linecolor, 2, "", "线");
PolyLine.Geometry.StartEdit();
} else { PolyLine.Geometry.Points.AddPoint(pos.X, pos.Y, 0); }
} catch (e) { alert(e.description); }
}
//鼠标移动实时
function DrawPolyLOnFrame() {
var minfo = SGWorld.Window.GetMouseInfo();
var mpos = SGWorld.Window.pixelToWorld(minfo.X, minfo.Y);
if (mpos == null) return false;
var pos = mpos.Position;
try {
if (PolyLine) {
var lpoints = PolyLine.Geometry.Points;
lpoints.Item(lpoints.count - 1).X = pos.X;
lpoints.Item(lpoints.count - 1).Y = pos.Y;
lpoints.Item(lpoints.count - 1).Z = 0;
}
} catch (e) { alert(e.description); }
}