public void DrawCirle(Point3D bd_point3D) { try { GeoCircle3D m_circle3d = new GeoCircle3D(bd_point3D, 20); GeoModel3D m_model = m_circle3d.ConvertToGeoModel3D(true); m_rec = m_model.Bounds; //设置数据集容量,避免空间查询出现过多对象 mUseData.OutWaterNetWork.Tolerance.NodeSnap = 0.0001; mUseData.SupplyWaterNetWork.Tolerance.NodeSnap = 0.0001; GeoStyle3D style = new GeoStyle3D(); style.FillForeColor = Color.FromArgb(100, 255, 128, 64); style.AltitudeMode = AltitudeMode.RelativeToGround; style.FillMode = FillMode3D.Fill; m_model.Style3D = style; TrackingLayer3D trackinglayer = mSceneControl.Scene.TrackingLayer; trackinglayer.IsEditable = true; trackinglayer.IsVisible = true; trackinglayer.Add(m_model, "圆"); CircleID = trackinglayer.IndexOf("圆"); } catch (System.Exception ex) { Trace.WriteLine(ex.Message); } }
private void TrackedSectionEvent(object sender, Tracked3DEventArgs e) { try { //绘制量算线对象 GeoLine3D geoLine3D = e.Geometry.Clone() as GeoLine3D; mRec2D = geoLine3D.Bounds; //设置数据集容量,避免空间查询出现过多对象 mUseData.OutWaterNetWork.Tolerance.NodeSnap = 0.0001; mUseData.SupplyWaterNetWork.Tolerance.NodeSnap = 0.0001; mUseData.ElectricNetWork.Tolerance.NodeSnap = 0.0001; GeoStyle3D mGeoStyle3D = new GeoStyle3D(); // mGeoStyle3D.MarkerColor = Color.FromArgb(255, 0, 255); mGeoStyle3D.LineColor = Color.FromArgb(0x00, 0x99, 0x00); mGeoStyle3D.LineWidth = 3; geoLine3D.Style3D = mGeoStyle3D.Clone(); geoLine3D.Style3D.AltitudeMode = AltitudeMode.Absolute; TrackingLayer3D trackinglayer = mSceneControl.Scene.TrackingLayer; trackinglayer.IsEditable = true; trackinglayer.IsVisible = true; trackinglayer.Add(geoLine3D, "GeoLine3D"); mSceneControl.Action = Action3D.Pan2; CrossSecLine(); } catch (Exception ex) { Trace.WriteLine(ex.Message); } }
//鼠标移动事件 void m_sceneControl_Tracking(object sender, Tracking3DEventArgs e) { if (m_sceneControl.Action == Action3D.CreatePolygon) { m_sceneControl.Scene.TrackingLayer.Clear(); Geometry3D geometry = e.Geometry as Geometry3D; if (geometry is GeoLine3D) { m_sceneControl.Scene.TrackingLayer.Add(geometry, "line"); return; } else if (geometry is GeoRegion3D) { GeoRegion3D geoRegion3D = geometry as GeoRegion3D; if (geoRegion3D[0].Count < 3) { return; } GeoStyle3D style3D = new GeoStyle3D(); style3D.LineColor = Color.Yellow; style3D.AltitudeMode = AltitudeMode.Absolute; geoRegion3D.Style3D = style3D; m_sceneControl.Scene.TrackingLayer.Add(geoRegion3D, "region"); } } }
/// <summary> /// 在三维场景中显示终止点 /// </summary> public void DisplayEndPoint() { try { GeoStyle3D pointStyle = new GeoStyle3D(); pointStyle.MarkerColor = Color.FromArgb(255, 51, 255, 0); pointStyle.MarkerSize = 10.0; pointStyle.AltitudeMode = AltitudeMode.Absolute; mEndPoint.Style3D = pointStyle; mEndPointTag = "endPoint"; mSceneControl.Scene.TrackingLayer.Add(mEndPoint, mEndPointTag); mMarkEnd = "PlaceMarkEnd"; GeoPlacemark markEnd = new GeoPlacemark("终止点", mEndPoint); markEnd.NameStyle.ForeColor = Color.FromArgb(255, 51, 255, 0); if (System.Environment.Is64BitProcess) { markEnd.Style3D.MarkerFile = @"..\..\..\Resource\redpin"; } else { markEnd.Style3D.MarkerFile = @"..\..\Resource\redpin"; } mSceneControl.Scene.TrackingLayer.Add(markEnd, mMarkEnd); mSceneControl.Scene.Refresh(); } catch (Exception ex) { Trace.WriteLine(ex.Message); } }
/// <summary> /// 初始化 /// </summary> private void Initialize() { try { mSceneControl.Action = Action3D.Pan; //注册事件 mSceneControl.Tracking += new Tracking3DEventHandler(TrackingHandler); mSceneControl.Tracked += new Tracked3DEventHandler(TrackedHandler); mSceneControl.MouseUp += SceneControlMouseUp; mPoint3Ds = new Point3Ds(); mGeoStyle3D = new GeoStyle3D(); mGeoStyle3D.MarkerColor = Color.FromArgb(255, 0, 255); mGeoStyle3D.LineColor = Color.FromArgb(255, 255, 0); mGeoStyle3D.LineWidth = 2; mGeoStyle3D.FillForeColor = Color.FromArgb(180, Color.Violet); mGeoStyle3D.AltitudeMode = AltitudeMode.RelativeToUnderground; //临时样式 mGeoStyle3DTemp = new GeoStyle3D(); mGeoStyle3DTemp.MarkerColor = Color.FromArgb(255, 0, 0); mGeoStyle3DTemp.LineColor = Color.FromArgb(0, 255, 0); mGeoStyle3DTemp.LineWidth = 2; mGeoStyle3DTemp.FillForeColor = Color.FromArgb(180, Color.Violet); mGeoStyle3DTemp.AltitudeMode = AltitudeMode.RelativeToUnderground; } catch (Exception ex) { Trace.WriteLine(ex.Message); } }
/// <summary> /// 在三维场景中显示起始点 /// </summary> public void DisplayRemovePoint() { try { GeoStyle3D pointStyle = new GeoStyle3D(); pointStyle.MarkerColor = Color.FromArgb(255, 51, 255, 0); pointStyle.MarkerSize = 10.0; pointStyle.AltitudeMode = AltitudeMode.Absolute; mRemovePoint3D.Style3D = pointStyle; mRemovePointTag = "startPoint"; mSceneControl.Scene.TrackingLayer.Add(mRemovePoint3D, mRemovePointTag); mMarkRemove = "PlaceMarkStart"; GeoPlacemark markStart = new GeoPlacemark("拆迁点", mRemovePoint3D); markStart.NameStyle.ForeColor = Color.FromArgb(255, 51, 255, 0); markStart.Style3D.MarkerFile = @"..\..\Resource\blupin.png"; mSceneControl.Scene.TrackingLayer.Add(markStart, mMarkRemove); mSceneControl.Scene.Refresh(); } catch (Exception ex) { Trace.WriteLine(ex.Message); } }
/// <summary> ///设置三维样式 /// </summary> /// <param name="geometry"></param> private void SetGeometry3DStyle(Geometry3D geometry) { try { GeoStyle3D style = new GeoStyle3D(); if (mSceneControl.Action == Action3D.MeasureAltitude || mSceneControl.Action == Action3D.MeasureDistance || mSceneControl.Action == Action3D.MeasureHorizontalDistance) { style.AltitudeMode = AltitudeMode.RelativeToUnderground; } else { style.AltitudeMode = AltitudeMode.ClampToGround; } style.MarkerSize = 4; style.MarkerColor = Color.FromArgb(255, 0, 255); //设置线样式 style.LineColor = Color.Yellow; style.LineWidth = 2; style.FillMode = FillMode3D.LineAndFill; style.FillForeColor = Color.LightSeaGreen; geometry.Style3D = style; } catch (Exception ex) { Trace.WriteLine(ex.Message); } }
private void DrawCirle(Point3D mPoint3D) { try { GeoCircle3D m_circle3d = new GeoCircle3D(mPoint3D, mRemoveRadius); GeoModel3D m_model = m_circle3d.ConvertToGeoModel3D(true); mRec = m_model.Bounds; //设置数据集容量,避免空间查询出现过多对象 mUseData.OutWaterNetWork.Tolerance.NodeSnap = 0.0001; mUseData.SupplyWaterNetWork.Tolerance.NodeSnap = 0.0001; GeoStyle3D style = new GeoStyle3D(); style.FillForeColor = Color.FromArgb(150, 153, 207, 25); style.AltitudeMode = AltitudeMode.RelativeToGround; style.FillMode = FillMode3D.Fill; m_model.Style3D = style; mSceneControl.Scene.TrackingLayer.IsEditable = true; mSceneControl.Scene.TrackingLayer.IsVisible = true; mSceneControl.Scene.TrackingLayer.Add(m_model, "圆"); CloseMethod(); } catch (System.Exception ex) { Trace.WriteLine(ex.Message); } }
//鼠标在场景中停留两秒中显示坡度坡向信息 private void timer_tick(Object sender, EventArgs e) { if (m_slope != null) { if (m_lastPoint3D != m_point3D) { this.m_sceneControl.Scene.TrackingLayer.Clear(); double slopeValue = m_slope.GetSlopeValue(m_point3D); double slopeDirection = m_slope.GetSlopeDirectionValue(m_point3D); TextStyle textstyle = new TextStyle(); textstyle.IsSizeFixed = true; textstyle.FontName = "微软雅黑"; textstyle.ForeColor = Color.Black; textstyle.FontScale = 2; textstyle.FontHeight = 3; TextPart3D textPart3D = new TextPart3D(); textPart3D.Text = String.Format("Longitude: {0}\nLatitude:{1}\nAltitude: {2}\nSlopeValue: {3}\nSlopeDirection: {4}", m_point3D.X, m_point3D.Y, m_point3D.Z, slopeValue, slopeDirection); textPart3D.AnchorPoint = m_point3D; GeoText3D geoText3D = new GeoText3D(textPart3D); geoText3D.TextStyle = textstyle; GeoStyle3D style3D = new GeoStyle3D(); style3D.AltitudeMode = AltitudeMode.Absolute; style3D.BottomAltitude = 10; geoText3D.Style3D = style3D; this.m_sceneControl.Scene.TrackingLayer.Add(geoText3D, "Text"); m_lastPoint3D = m_point3D; } } }
public void coordLabel() { try { double x_label = mPoint3D.X; double y_label = mPoint3D.Y; double z_label = mPoint3D.Z; String coord = "X: " + x_label + "\n\n" + "Y: " + y_label + "\n\n" + "Z: " + z_label; TextPart3D mText1 = new TextPart3D(); mText1.Text = coord; mText1.AnchorPoint = mPoint3D; TextStyle mTextStyle1 = new TextStyle(); mTextStyle1.FontName = "微软雅黑"; mTextStyle1.ForeColor = Color.Red; mTextStyle1.FontHeight = 7; mTextStyle1.IsSizeFixed = false; mTextStyle1.Alignment = TextAlignment.MiddleCenter; GeoText3D geoText_1 = new GeoText3D(mText1, mTextStyle1); GeoStyle3D geostyle_1 = new GeoStyle3D(); geostyle_1.AltitudeMode = AltitudeMode.RelativeToGround; geoText_1.Style3D = geostyle_1; TrackingLayer3D trackinglayer = mSceneControl.Scene.TrackingLayer; trackinglayer.IsEditable = true; trackinglayer.IsVisible = true; trackinglayer.Add(geoText_1, "Coord"); mSceneControl.Scene.Refresh(); } catch (Exception) { } }
public void Output(SuperMap.UI.Tracked3DEventArgs e1) { try { //绘制量算面对象 GeoRegion3D geoRegion3D = e1.Geometry as GeoRegion3D; //得到面对象的外接矩形,作为查询区域 m_rec = geoRegion3D.Bounds; //设置数据集容量,避免空间查询出现过多对象 mUseData.OutWaterNetWork.Tolerance.NodeSnap = 0.0001; mUseData.SupplyWaterNetWork.Tolerance.NodeSnap = 0.0001; mGeoStyle3D = new GeoStyle3D(); mGeoStyle3D.MarkerColor = Color.FromArgb(255, 0, 255); mGeoStyle3D.LineColor = Color.FromArgb(255, 255, 0); mGeoStyle3D.LineWidth = 1; mGeoStyle3D.FillForeColor = Color.FromArgb(100, 250, 250, 50); // mGeoStyle3D.AltitudeMode = AltitudeMode.ClampToGround; geoRegion3D.Style3D = mGeoStyle3D.Clone(); geoRegion3D.Style3D.AltitudeMode = AltitudeMode.Absolute; geoRegion3D.Style3D.FillForeColor = Color.FromArgb(50, 255, 128, 64); TrackingLayer3D trackinglayer = mSceneControl.Scene.TrackingLayer; trackinglayer.IsEditable = true; trackinglayer.IsVisible = true; trackinglayer.Add(geoRegion3D, "geoRegion3D"); RegionID = trackinglayer.IndexOf("geoRegion3D"); mSceneControl.Action = Action3D.Pan2; } catch (System.Exception ex) { Trace.WriteLine(ex.Message); } }
/// <summary> /// 设置量算结果文本的风格 /// </summary> /// <param name="text"></param> private void SetResultTextStyle(GeoText3D text) { try { TextStyle textStyle = new TextStyle(); textStyle.ForeColor = Color.White; textStyle.Outline = true; textStyle.BackColor = Color.Black; textStyle.FontHeight = 10; text.TextStyle = textStyle; GeoStyle3D style = new GeoStyle3D(); if (m_sceneControl.Action == Action3D.MeasureAltitude) { style.AltitudeMode = AltitudeMode.Absolute; } else { style.AltitudeMode = AltitudeMode.ClampToGround; } text.Style3D = style; } catch (Exception ex) { MessageBox.Show(ex.Message); } }
//将数据集添加到场景中 private void AddToSceneToolStripMenuItem_Click(object sender, EventArgs e) { WorkspaceTreeNodeBase node = this.workspaceControl.WorkspaceTree.SelectedNode as WorkspaceTreeNodeBase; Dataset dataset = node.GetData() as Dataset; Layer3D layer3D = null; TerrainLayer terrainLayer = null; String layerName = dataset.Name + "@" + dataset.Datasource.Alias; switch (node.NodeType) { case WorkspaceTreeNodeDataType.DatasetVector: { Random random = new Random(Guid.NewGuid().GetHashCode()); DatasetVector datasetVector = dataset as DatasetVector; Layer3DSettingVector settingVector = new Layer3DSettingVector(); GeoStyle3D style = new GeoStyle3D(); style.FillMode = FillMode3D.LineAndFill; style.MarkerColor = Color.FromArgb(random.Next(0, 255), random.Next(0, 255), random.Next(0, 255)); //Color.Red; style.LineColor = Color.FromArgb(random.Next(0, 255), random.Next(0, 255), random.Next(0, 255)); //Color.SaddleBrown; style.FillForeColor = Color.FromArgb(random.Next(0, 255), random.Next(0, 255), random.Next(0, 255)); //Color.SkyBlue; if (datasetVector.Type == DatasetType.Line3D) { style.AltitudeMode = AltitudeMode.Absolute; style.LineWidth = 4; } settingVector.Style = style; layer3D = this.m_sceneControl.Scene.Layers.Add(datasetVector, settingVector, true, layerName); break; } case WorkspaceTreeNodeDataType.DatasetGrid: { DatasetGrid datasetGrid = dataset as DatasetGrid; terrainLayer = this.m_sceneControl.Scene.TerrainLayers.Add(datasetGrid, true); break; } case WorkspaceTreeNodeDataType.DatasetImage: { DatasetImage datasetImage = dataset as DatasetImage; Layer3DSettingImage settingImage = new Layer3DSettingImage(); layer3D = this.m_sceneControl.Scene.Layers.Add(datasetImage, settingImage, true, layerName); break; } } //if (layer3D != null) //{ // this.m_sceneControl.Scene.EnsureVisible(layer3D.Bounds); //} //if (terrainLayer != null) //{ // this.m_sceneControl.Scene.EnsureVisible(terrainLayer.Bounds); //} this.m_sceneControl.Scene.Refresh(); }
public void BufferQuery() { try { Datasource datasource = mUseData.DataSource; DatasetVector mRegionDatasets = datasource.Datasets["New_Model"] as DatasetVector; mRegionDatasets.PrjCoordSys = datasource.Datasets[0].PrjCoordSys; String bufferName = "bufferModel"; if (datasource.Datasets.Contains(bufferName)) { datasource.Datasets.Delete(bufferName); } mBufferDataset = (DatasetVector)datasource.Datasets.CreateFromTemplate(bufferName, mRegionDatasets); #region 设置矢量面初始样式 GeoStyle3D style3D = new GeoStyle3D(); style3D.AltitudeMode = AltitudeMode.ClampToGround; style3D.FillForeColor = Color.White; style3D.FillMode = FillMode3D.LineAndFill; Layer3DSettingVector layer3DSetting = new Layer3DSettingVector(); layer3DSetting.Style = style3D; Layer3DDataset m_layerRegion = mSceneControl.Scene.Layers.Add(mRegionDatasets, layer3DSetting, true); #endregion QueryParameter para = new QueryParameter(); para.SpatialQueryMode = SpatialQueryMode.Intersect; para.SpatialQueryObject = mBufferDataset; Recordset recordset = mRegionDatasets.Query(para); List <Int32> ids = new List <int>(recordset.RecordCount); while (!recordset.IsEOF) { ids.Add(recordset.GetID()); recordset.MoveNext(); } m_layerRegion.Selection.AddRange(ids.ToArray()); m_layerRegion.Selection.UpdateData(); m_layerRegion.Selection.Style.FillForeColor = Color.FromArgb(180, 100, 100, 255); mSceneControl.Scene.Refresh(); recordset.Dispose(); } catch (Exception ex) { Trace.WriteLine(ex.Message); } }
//窗体关闭事件 private void DlgSkyline_FormClosing(object sender, FormClosingEventArgs e) { m_sceneControl.Action = Action3D.Pan; this.clearSkylineAnalysis(); this.RegisterEventsForHeightLimit(false); this.m_sceneControl.Scene.TrackingLayer.Clear(); m_style3D = null; }
private GeoStyle3D SelectPointGeoStyle3D(Double z) { GeoStyle3D geoStyle3D = new GeoStyle3D(); geoStyle3D.AltitudeMode = AltitudeMode.Absolute; geoStyle3D.MarkerColor = System.Drawing.Color.FromArgb(255, 255, 0, 0); geoStyle3D.MarkerSize = 5; geoStyle3D.ExtendedHeight = z; return(geoStyle3D); }
public void AddModel_Click(Point3D Point3D, int ModelIndex, string strID, string strNOID) { AddPointToDatasets(Point3D, ModelIndex, strID, strNOID); Datasource datasource = m_workspace.Datasources[0]; DatasetVector pointDataset = datasource.Datasets["Point3D"] as DatasetVector; Recordset recordset = pointDataset.GetRecordset(false, CursorType.Dynamic); GeoPoint3D geopoint3D = new GeoPoint3D(Point3D); GeoStyle3D geoStyle = new GeoStyle3D(); geoStyle.MarkerSymbolID = UserHelper.Marker3DSymbolID[ModelIndex]; geoStyle.IsMarkerSizeFixed = false; geoStyle.MarkerSize = 1; geoStyle.Marker3DScaleX = 0.03; geoStyle.Marker3DScaleY = 0.03; geoStyle.Marker3DScaleZ = 0.08; geoStyle.IsMarker3D = true; geoStyle.AltitudeMode = AltitudeMode.RelativeToGround; geopoint3D.Style3D = geoStyle; recordset.MoveLast(); recordset.AddNew(geopoint3D); recordset.SetFieldValue(m_filedName, strID); recordset.Update(); recordset.Dispose(); m_layer3DPoint.IsSelectable = false; m_layer3DPoint.UpdateData(); m_SceneControl.Scene.Refresh(); //AddKmlLayer(); //GeoPlacemark geoPlacemark = new GeoPlacemark(); //m_geoModel = new GeoModel(); //m_geoModel.FromFile(UserHelper.sModelName[ModelIndex]); ////人物模型朝向前进方向,如果原始方向一致则不需要旋转。 //m_geoModel.Style3D = m_style3D; //m_geoModel.RotationZ = 180; //m_geoModel.ScaleX = 0.3; //m_geoModel.ScaleY = 0.3; //m_geoModel.ScaleZ = 0.3; //m_geoModel.Position = new Point3D(Point3D.X, Point3D.Y, Point3D.Z); //geoPlacemark.Geometry = m_geoModel; //Feature3Ds feture3Ds = m_LayerKML.Features; //Feature3D feature = new Feature3D(); //feature.Geometry = geoPlacemark; //feature.Description = strID; //feature.Name = feature.Description; //feture3Ds.Add(feature); //feture3Ds.ToKMLFile(m_LayerKML.DataName); //m_LayerKML.UpdateData(); }
private void DlgSkyline_Load(object sender, EventArgs e) { this.cb_TextureQuality.SelectedIndex = 1; this.colorButton.Color = m_skylineColor; this.gb_HeightLimit.Enabled = false; this.btn_ClearResult.Enabled = false; this.cb_DisplayMode.SelectedIndex = 0; this.btn_FlyToViewer.Enabled = false; m_style3D = new GeoStyle3D(); this.RegisterEventsForHeightLimit(false); }
private void DlgSightLine_Load(object sender, EventArgs e) { this.btn_Analyst.Enabled = true; this.btn_Clear.Enabled = false; this.btn_StopAnalysis.Enabled = false; this.cb_ColorScheme.SelectedIndex = 0; this.cb_TargetPtsIndex.Items.Clear(); this.RegisterEvents(false); m_style3D = new GeoStyle3D(); }
public void Initialize(Layer3DKML layerKML, SceneControl sceneControl, LayersControl layersControl) { m_layerKML = layerKML; m_sceneControl = sceneControl; m_layersControl = layersControl; m_style3D = new GeoStyle3D(); this.tb_LayerKml.Text = Path.GetFileName(m_layerKML.DataName); this.InitCombox(m_layerKML); m_sceneControl.Tracked -= new Tracked3DEventHandler(m_sceneControl_Tracked); m_sceneControl.Tracked += new Tracked3DEventHandler(m_sceneControl_Tracked); }
/// <summary> /// 获取3D要素风格 /// </summary> /// <param name="geometry"></param> private void SetGeometry3DStyle(Geometry3D geometry) { GeoStyle3D style = new GeoStyle3D(); style.MarkerSize = 4; style.MarkerColor = Color.FromArgb(255, 0, 255); style.AltitudeMode = AltitudeMode.RelativeToUnderground; //设置线样式 style.LineColor = Color.Yellow; style.LineWidth = 3; style.FillMode = FillMode3D.LineAndFill; style.FillForeColor = Color.LightSeaGreen; geometry.Style3D = style; }
//关闭对话框 private void DlgNodeAnimation_FormClosing(object sender, FormClosingEventArgs e) { this.cb_Model.Items.Clear(); this.m_sceneControl.Scene.TrackingLayer.Clear(); m_nodeAnimation.TimePositionChanged -= new TimePositionChangedEventHandler(m_nodeAnimationTimePositionChanged); m_sceneControl.Tracked -= new Tracked3DEventHandler(m_sceneControl_Tracked); m_nodeAnimation.IsEnabled = false; m_geoLine3D = null; m_style3D = null; m_nodeAnimation = null; m_geoModel = null; this.btn_AddToKML.Enabled = false; }
/// <summary> /// 设置结果文本样式 /// </summary> /// <param name="text"></param> private void SetResultTextStyle(GeoText3D text) { TextStyle textStyle = new TextStyle(); textStyle.ForeColor = Color.White; textStyle.Outline = true; textStyle.BackColor = Color.Black; textStyle.FontHeight = 10; text.TextStyle = textStyle; GeoStyle3D style = new GeoStyle3D(); style.AltitudeMode = AltitudeMode.RelativeToUnderground; text.Style3D = style; }
/// <summary> /// 初始化 /// </summary> /// <param name="sceneControl"></param> /// <param name="layer3D"></param> /// <param name="isSelection"></param> public void Initialize(SceneControl sceneControl, Layer3D layer3D, bool isSelection) { m_sceneControl = sceneControl; m_layer3D = layer3D; m_bSelection = isSelection; this.cb_AltitudeMode.Items.Clear(); //初始化高度模式列表 if (m_bSelection) { this.cb_AltitudeMode.Items.Add("贴地"); this.cb_AltitudeMode.Items.Add("贴对象"); } else { this.cb_AltitudeMode.Items.Add("贴地"); this.cb_AltitudeMode.Items.Add("贴对象"); this.cb_AltitudeMode.Items.Add("相对地面"); this.cb_AltitudeMode.Items.Add("绝对高度"); this.cb_AltitudeMode.Items.Add("相对地下"); } //初始化m_style3D if (m_bSelection) { m_style3D = m_layer3D.Selection.Style; } else { if (m_layer3D.Type == Layer3DType.Dataset) { Layer3DDataset layer3DDataset = m_layer3D as Layer3DDataset; Layer3DSettingVector layerSetting = layer3DDataset.AdditionalSetting as Layer3DSettingVector; m_style3D = layerSetting.Style; } else if (m_layer3D.Type == Layer3DType.VectorFile) { Layer3DVectorFile layer3DFile = m_layer3D as Layer3DVectorFile; Layer3DSettingVector layerSetting = layer3DFile.AdditionalSetting as Layer3DSettingVector; m_style3D = layerSetting.Style; } } this.UpdateData(); }
/// <summary> /// 初始化 /// </summary> private void Initialize() { //设置鼠标抓手 mSceneControl.Action = Action3D.Pan2; //清空跟踪图层 mSceneControl.Scene.TrackingLayer.Clear(); //注册鼠标点击/对象选择事件 mSceneControl.MouseDown += new MouseEventHandler(mSceneControl_MouseDown); mSceneControl.ObjectSelected += new ObjectSelectedEventHandler(mSceneControlSelected); //设置符号样式 mTextPoint3Ds = new Point3Ds(); mGeoStyle3D = new GeoStyle3D(); mGeoStyle3D.MarkerColor = Color.FromArgb(255, 0, 255); mGeoStyle3D.LineColor = Color.FromArgb(255, 255, 0); mGeoStyle3D.LineWidth = 2; mGeoStyle3D.FillForeColor = Color.FromArgb(180, Color.Violet); mGeoStyle3D.AltitudeMode = AltitudeMode.RelativeToUnderground; }
/// <summary> /// 鼠标单击事件来实现画点的功能 /// </summary> /// <param routestopName="sender"></param> /// <param routestopName="e"></param> private void m_sceneControl_MouseClick(object sender, MouseEventArgs e) { try { if (e.Button == MouseButtons.Left && isDraw) { //画点 if (!flag) { Datasource datasource = m_workspace.Datasources[0]; DatasetVector pointDataset = datasource.Datasets["Point3D"] as DatasetVector; Recordset recordset = pointDataset.GetRecordset(false, CursorType.Dynamic); Point3D pt3d = new Point3D(); pt3d = m_sceneControl.Scene.PixelToGlobe(e.Location, PixelToGlobeMode.TerrainAndModel); GeoPoint3D geopoint3D = new GeoPoint3D(pt3d); GeoStyle3D geoStyle = new GeoStyle3D(); geoStyle.MarkerSymbolID = m_marker3DIndex; geoStyle.IsMarkerSizeFixed = false; geoStyle.MarkerSize = 1; geoStyle.Marker3DScaleX = 1; geoStyle.Marker3DScaleY = 1; geoStyle.Marker3DScaleZ = 1; geoStyle.IsMarker3D = true; geoStyle.AltitudeMode = AltitudeMode.RelativeToGround; geopoint3D.Style3D = geoStyle; recordset.MoveLast(); recordset.AddNew(geopoint3D); recordset.Update(); recordset.Dispose(); m_layer3DPoint.IsSelectable = false; m_layer3DPoint.UpdateData(); m_sceneControl.Scene.Refresh(); } } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
private void DlgSlopeMap_Load(object sender, EventArgs e) { this.cb_DisplayStyle.SelectedIndex = 2; this.tb_Opacity.Text = Convert.ToString(this.m_opacity); this.tb_minVisibleSlope.Text = Convert.ToString(m_minVisibleSlope); this.tb_maxVisibleSlope.Text = Convert.ToString(m_maxVisibleSlope); this.cb_IsShowSlopInfo.Checked = false; this.cb_IsShowBorder.Checked = m_bShowBorer; this.colorButton_Border.Color = m_BorderColor; this.btn_Clear.Enabled = false; this.btn_StopAnalysis.Enabled = false; m_style3D = new GeoStyle3D(); m_style3D.FillForeColor = Color.Red; m_timer = new Timer(); m_timer.Enabled = false; this.RegisterEvents(false); }
public void OutputMeasureArea(SuperMap.UI.Tracking3DEventArgs e1) { try { Point location = mSceneControl.PointToClient(Cursor.Position); mTempPoint = new Point3D(e1.X, e1.Y, e1.Z); mPoint3Ds.Add(mTempPoint); GeoRegion3D geoRegion3D = null; if (mPoint3Ds.Count >= 3) { geoRegion3D = new GeoRegion3D(mPoint3Ds); mGeoStyle3DTemp = new GeoStyle3D(); mGeoStyle3DTemp.MarkerColor = Color.FromArgb(255, 0, 0); mGeoStyle3DTemp.LineColor = Color.FromArgb(0, 255, 0); mGeoStyle3DTemp.LineWidth = 1; mGeoStyle3DTemp.FillForeColor = Color.FromArgb(180, Color.Violet); mGeoStyle3DTemp.AltitudeMode = AltitudeMode.RelativeToGround; geoRegion3D.Style3D = mGeoStyle3DTemp.Clone(); location.Offset(30, 30); if (location.X > mSceneControl.Bounds.Width / 4 * 3) { location.X = mSceneControl.Bounds.Width / 4 * 3; } if (location.Y > mSceneControl.Bounds.Height) { location.Y = location.Y - 60; } int index = mSceneControl.Scene.TrackingLayer.IndexOf(mMessageTrackingTag); if (index >= 0) { mSceneControl.Scene.TrackingLayer.Remove(index); } } } catch (System.Exception ex) { Trace.WriteLine(ex.Message); } }
//将查询结果显示到场景中 private Layer3D AddResultToScene(DatasetVector dataset, Color color) { Layer3Ds layer3Ds = m_sceneControl.Scene.Layers; //设置图层风格为依模型 Layer3DSettingVector settingVector = new Layer3DSettingVector(); GeoStyle3D style3D = new GeoStyle3D(); style3D.AltitudeMode = AltitudeMode.ClampToObject; style3D.FillForeColor = color; settingVector.Style = style3D; //将数据添加到场景中 Layer3DDataset layerDataset = layer3Ds.Add(dataset, settingVector, true); layerDataset.UpdateData(); m_sceneControl.Scene.EnsureVisible(layerDataset); return(layerDataset); }
/// <summary> /// 设置结果文本样式 /// </summary> /// <param name="text"></param> private void SetResultTextStyle(GeoText3D text) { try { TextStyle textStyle = new TextStyle(); textStyle.ForeColor = Color.White; textStyle.Outline = true; textStyle.BackColor = Color.Black; textStyle.FontHeight = 10; text.TextStyle = textStyle; GeoStyle3D style = new GeoStyle3D(); style.AltitudeMode = AltitudeMode.RelativeToUnderground; text.Style3D = style; } catch (Exception ex) { Trace.WriteLine(ex.Message); } }
/// <summary> ///默认的空间查询图形风格 /// </summary> /// <returns></returns> private GeoStyle3D GetGeoStyle3D() { GeoStyle3D geoStyle = new GeoStyle3D(); geoStyle.AltitudeMode = AltitudeMode.ClampToGround; geoStyle.BottomAltitude = 20; //geoStyle.ExtendedHeight = 20; geoStyle.LineColor = System.Drawing.Color.Yellow; geoStyle.LineWidth = 1; geoStyle.FillBackColor = System.Drawing.Color.FromArgb(180, 255, 255, 0); geoStyle.FillForeColor = System.Drawing.Color.FromArgb(180, 255, 255, 0); geoStyle.MarkerColor = System.Drawing.Color.FromArgb(180, 255, 255, 0); geoStyle.FillMode = FillMode3D.Fill; geoStyle.FillGradientMode = FillGradientMode.Linear; geoStyle.MarkerSize = 15; return geoStyle; }
/// <summary> /// 打开需要的地形文件和影像文件 /// </summary> private void Initialize() { try { // 调整sceneControl的状态 //SmObjectLocator.getInstance().GlobeObject.Action = Action3D.Pan; //注册事件 //SmObjectLocator.getInstance().GlobeObject.Tracking += new Tracking3DEventHandler(TrackingHandler); //SmObjectLocator.getInstance().GlobeObject.Tracked += new Tracked3DEventHandler(TrackedHandler); //SmObjectLocator.getInstance().GlobeObject.MouseUp += m_SceneControl_MouseUp; m_point3Ds = new Point3Ds(); m_style3d = new GeoStyle3D(); m_GeoStyle3D = new GeoStyle3D(); m_GeoStyle3D.MarkerColor = Color.FromArgb(255, 0, 255); m_GeoStyle3D.LineColor = Color.FromArgb(255, 255, 0); m_GeoStyle3D.LineWidth = 1; m_GeoStyle3D.FillForeColor = Color.FromArgb(180, Color.Violet); m_GeoStyle3D.AltitudeMode = AltitudeMode.ClampToGround; m_GeoStyle3DTemp = new GeoStyle3D(); m_GeoStyle3DTemp.MarkerColor = Color.FromArgb(255, 0, 0); m_GeoStyle3DTemp.LineColor = Color.FromArgb(0, 255, 0); m_GeoStyle3DTemp.LineWidth = 1; m_GeoStyle3DTemp.FillForeColor = Color.FromArgb(180, Color.Violet); m_GeoStyle3DTemp.AltitudeMode = AltitudeMode.ClampToGround; } catch (Exception ex) { Trace.WriteLine(ex.Message); } }
/// <summary> /// 设置量算结果文本的风格 /// </summary> /// <param name="text"></param> private void SetResultTextStyle(GeoText3D text) { try { TextStyle textStyle = new TextStyle(); textStyle.ForeColor = Color.White; textStyle.Outline = true; textStyle.BackColor = Color.Black; textStyle.FontHeight = 10; text.TextStyle = textStyle; GeoStyle3D style = new GeoStyle3D(); if (SmObjectLocator.getInstance().GlobeObject.Action == Action3D.MeasureAltitude) { style.AltitudeMode = AltitudeMode.Absolute; style.BottomAltitude = 200; } else { style.AltitudeMode = AltitudeMode.ClampToGround; } text.Style3D = style; } catch (Exception ex) { Trace.WriteLine(ex.Message); } }
/// <summary> /// 设置添加到TrackingLayer的三维几何对象的风格 /// </summary> /// <param name="geometry"></param> private void SetGeometry3DStyle(Geometry3D geometry) { try { GeoStyle3D style = new GeoStyle3D(); if (SmObjectLocator.getInstance().GlobeObject.Action == Action3D.MeasureAltitude || SmObjectLocator.getInstance().GlobeObject.Action == Action3D.MeasureDistance || SmObjectLocator.getInstance().GlobeObject.Action == Action3D.MeasureHorizontalDistance) { style.AltitudeMode = AltitudeMode.Absolute; style.BottomAltitude = 100; } else { style.AltitudeMode = AltitudeMode.ClampToGround; } style.MarkerSize = 4; style.MarkerColor = Color.FromArgb(255, 0, 255); style.LineColor = Color.Yellow; style.LineWidth = 2; style.FillMode = FillMode3D.LineAndFill; style.FillForeColor = Color.LightSeaGreen; geometry.Style3D = style; } catch (Exception ex) { Trace.WriteLine(ex.Message); } }
/// <summary> /// 初始化要素图标样式 /// </summary> private void InitGeoPoint3DParams(bool isReset = false) { if (isReset) { this.lastGPot = null; this.lastTag = ""; this.lastIndex = -1; } else { GeoStyle3D sty3D = new GeoStyle3D(); sty3D.MarkerFile = "Images/point.png"; sty3D.MarkerScale = defaultScale; sty3D.MarkerSize = 32; sty3D.AltitudeMode = AltitudeMode.ClampToGround; normalStyle = sty3D; GeoStyle3D sty3DHigh = new GeoStyle3D(); sty3DHigh.MarkerFile = "Images/bluepot.png"; sty3DHigh.MarkerScale = defaultScale * 1.5; sty3DHigh.MarkerSize = 32; sty3DHigh.AltitudeMode = AltitudeMode.ClampToGround; highLightStyle = sty3DHigh; } }