⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form1.cs

📁 C#开发的SuperMap Objects动态分段示范源码
💻 CS
字号:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using SuperMapLib;
using System.Runtime.InteropServices;

namespace myDynamic
{
	/// <summary>
	/// Form1 的摘要说明。
	/// </summary>
	public class Form1 : System.Windows.Forms.Form
	{
		private AxSuperMapLib.AxSuperWorkspace axSuperWorkspace1;
		private AxSuperMapLib.AxSuperMap axSuperMap1;
		private System.Windows.Forms.Button button1;
		private System.Windows.Forms.Button button2;
		/// <summary>
		/// 必需的设计器变量。
		/// </summary>
		private System.ComponentModel.Container components = null;

		public Form1()
		{
			//
			// Windows 窗体设计器支持所必需的
			//
			InitializeComponent();

			//
			// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
			//
		}

		/// <summary>
		/// 清理所有正在使用的资源。
		/// </summary>
		protected override void Dispose( bool disposing )
		{
			if( disposing )
			{
				if (components != null) 
				{
					components.Dispose();
				}
			}
			base.Dispose( disposing );
		}

		#region Windows 窗体设计器生成的代码
		/// <summary>
		/// 设计器支持所需的方法 - 不要使用代码编辑器修改
		/// 此方法的内容。
		/// </summary>
		private void InitializeComponent()
		{
			System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(Form1));
			this.axSuperWorkspace1 = new AxSuperMapLib.AxSuperWorkspace();
			this.axSuperMap1 = new AxSuperMapLib.AxSuperMap();
			this.button1 = new System.Windows.Forms.Button();
			this.button2 = new System.Windows.Forms.Button();
			((System.ComponentModel.ISupportInitialize)(this.axSuperWorkspace1)).BeginInit();
			((System.ComponentModel.ISupportInitialize)(this.axSuperMap1)).BeginInit();
			this.SuspendLayout();
			// 
			// axSuperWorkspace1
			// 
			this.axSuperWorkspace1.Enabled = true;
			this.axSuperWorkspace1.Location = new System.Drawing.Point(232, 24);
			this.axSuperWorkspace1.Name = "axSuperWorkspace1";
			this.axSuperWorkspace1.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axSuperWorkspace1.OcxState")));
			this.axSuperWorkspace1.Size = new System.Drawing.Size(32, 32);
			this.axSuperWorkspace1.TabIndex = 0;
			// 
			// axSuperMap1
			// 
			this.axSuperMap1.Enabled = true;
			this.axSuperMap1.Location = new System.Drawing.Point(32, 72);
			this.axSuperMap1.Name = "axSuperMap1";
			this.axSuperMap1.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axSuperMap1.OcxState")));
			this.axSuperMap1.Size = new System.Drawing.Size(536, 184);
			this.axSuperMap1.TabIndex = 1;
			// 
			// button1
			// 
			this.button1.Location = new System.Drawing.Point(64, 16);
			this.button1.Name = "button1";
			this.button1.Size = new System.Drawing.Size(208, 32);
			this.button1.TabIndex = 2;
			this.button1.Text = "LocateLine";
			this.button1.Click += new System.EventHandler(this.button1_Click);
			// 
			// button2
			// 
			this.button2.Location = new System.Drawing.Point(288, 16);
			this.button2.Name = "button2";
			this.button2.Size = new System.Drawing.Size(208, 32);
			this.button2.TabIndex = 3;
			this.button2.Text = "LocateRow";
			this.button2.Click += new System.EventHandler(this.button2_Click);
			// 
			// Form1
			// 
			this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
			this.ClientSize = new System.Drawing.Size(600, 266);
			this.Controls.Add(this.button2);
			this.Controls.Add(this.button1);
			this.Controls.Add(this.axSuperMap1);
			this.Controls.Add(this.axSuperWorkspace1);
			this.Name = "Form1";
			this.Text = "Form1";
			this.Load += new System.EventHandler(this.Form1_Load);
			((System.ComponentModel.ISupportInitialize)(this.axSuperWorkspace1)).EndInit();
			((System.ComponentModel.ISupportInitialize)(this.axSuperMap1)).EndInit();
			this.ResumeLayout(false);

		}
		#endregion

		/// <summary>
		/// 应用程序的主入口点。
		/// </summary>
		[STAThread]
		static void Main() 
		{
			Application.Run(new Form1());
		}

		private void Form1_Load(object sender, System.EventArgs e)
		{
			soDataSource objDs;
			object myHdl;
			myHdl=axSuperWorkspace1.CtlHandle;
			axSuperMap1.Connect(myHdl);
			Marshal.ReleaseComObject(myHdl);
			myHdl=null;
			objDs=axSuperWorkspace1.OpenDataSource("d:\\test.sdb","test",seEngineType.sceSDBPlus,false);
			if(objDs==null)
			{
				MessageBox.Show("打开数据源d:\\test.sdb失败");
				return;
			}
			else
			{
				MessageBox.Show("打开数据源d:\\test.sdb成功");
			}
			
		}

		private void button1_Click(object sender, System.EventArgs e)
		{
			soLayers objLys;
			objLys=axSuperMap1.Layers;
			if(objLys!=null && objLys.Count>0)
			{
				objLys.RemoveAll();
			}

			soDataSources objDss;
			soDataSource objDs;
			soDatasets objDts;
			soDataset objDt;
			soDatasetVector objDtvTble;
			soDatasetVector objDtvRut;
			soDynamicEventLocator objEventLct;
			objDss=axSuperWorkspace1.Datasources;
			objDs=objDss[1];
			objDts=objDs.Datasets;
			objDt=objDts["NewLineTable"];
			objDtvTble=(soDatasetVector)objDt;
			objDt=objDts["RouteDT"];
			objDtvRut=(soDatasetVector)objDt;
			objEventLct=objDtvTble.CreateDynamicEvent();
			objEventLct.DynamicEventType=seDynamicEventType.sceLineEvent;
			objEventLct.EventRouteIDField="ID";
			objEventLct.FromMeasureField="FLength";
			objEventLct.ToMeasureField="TLength";
			objEventLct.RouteDataset=objDtvRut;
			objEventLct.RouteIDField="smid";

			soLayer objLy;
			objLy=objLys.AddDataset(objDt,true);
			objDt=objDts["NewLineTable"];
			objLy=objLys.AddDataset(objDt,true);
			axSuperMap1.CtlRefresh();
			soGeometry objGm;
			
			objGm=objEventLct.LocateLine(1,20,30);
			MessageBox.Show(objGm.Type.ToString());
			soThemeUnique objTheme;
			objTheme=objLy.ThemeUnique;
			objTheme.Field="smid";
			objTheme.Enable=true;
			objTheme.MakeDefault();
			int iCount,i;
			soStyle objSty;
			iCount=objTheme.ValueCount;
			for(i=1;i<=iCount;i++)
			{
				objSty=objTheme.get_Style(i);
				objSty.PenWidth=10;
				objTheme.set_Style(i,objSty);				
			}
			axSuperMap1.CtlRefresh();


			
			
		}

		private void button2_Click(object sender, System.EventArgs e)
		{
			soLayers objLys;
			objLys=axSuperMap1.Layers;
			if(objLys!=null && objLys.Count>0)
			{
				objLys.RemoveAll();
			}

			soDataSources objDss;
			soDataSource objDs;
			soDatasets objDts;
			soDataset objDt;
			soDatasetVector objDtvTble;
			soDatasetVector objDtvRut;
			soDynamicEventLocator objEventLct;
			objDss=axSuperWorkspace1.Datasources;
			objDs=objDss[1];
			objDts=objDs.Datasets;
			objDt=objDts["NewLineTable"];
			objDtvTble=(soDatasetVector)objDt;
			objDt=objDts["RouteDT"];
			objDtvRut=(soDatasetVector)objDt;
			objEventLct=objDtvTble.CreateDynamicEvent();
			objEventLct.DynamicEventType=seDynamicEventType.sceLineEvent;
			objEventLct.EventRouteIDField="ID";
			objEventLct.FromMeasureField="FLength";
			objEventLct.ToMeasureField="TLength";
			objEventLct.RouteDataset=objDtvRut;
			objEventLct.RouteIDField="smid";

			soLayer objLy;
			objLy=objLys.AddDataset(objDt,true);
			objDt=objDts["NewLineTable"];
			objLy=objLys.AddDataset(objDt,true);
			axSuperMap1.CtlRefresh();
			soGeometry objGm;

			soThemeLabel  objTheme;
			objTheme=objLy.ThemeLabel;
			objTheme.Field="smid";
			objTheme.Enable=true;
			
			
			axSuperMap1.CtlRefresh();
			
			objGm=objEventLct.LocateRow(1);
			MessageBox.Show(objGm.Type.ToString());
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -