阅读:1900回复:3
mo+c#中的 tips 实现
<H2> </H2>
<P>using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data;</P> <P>namespace WindowsApplication67 { /// <SUMMARY> /// Form1 的摘要说明。 /// </SUMMARY> public class Form1 : System.Windows.Forms.Form { private AxMapObjects2.AxMap axMap1; private System.Windows.Forms.TextBox textBox1; private System.Windows.Forms.Timer timer1; private System.ComponentModel.IContainer components; public maptips2 tips;</P> <P> public Form1() { // // Windows 窗体设计器支持所必需的 // InitializeComponent();</P> <P> // // TOD 在 InitializeComponent 调用后添加任何构造函数代码 // }</P> <P> /// <SUMMARY> /// 清理所有正在使用的资源。 /// </SUMMARY> protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); }</P> <P> #region Windows 窗体设计器生成的代码 /// <SUMMARY> /// 设计器支持所需的方法 - 不要使用代码编辑器修改 /// 此方法的内容。 /// </SUMMARY> private void InitializeComponent() { this.components = new System.ComponentModel.Container(); System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(Form1)); this.axMap1 = new AxMapObjects2.AxMap(); this.textBox1 = new System.Windows.Forms.TextBox(); this.timer1 = new System.Windows.Forms.Timer(this.components); ((System.ComponentModel.ISupportInitialize)(this.axMap1)).BeginInit(); this.SuspendLayout(); // // axMap1 // this.axMap1.Location = new System.Drawing.Point(16, 24); this.axMap1.Name = "axMap1"; this.axMap1.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axMap1.OcxState"))); this.axMap1.Size = new System.Drawing.Size(392, 224); this.axMap1.TabIndex = 0; this.axMap1.MouseDownEvent += new AxMapObjects2._DMapEvents_MouseDownEventHandler(this.axMap1_MouseDownEvent); this.axMap1.MouseMoveEvent += new AxMapObjects2._DMapEvents_MouseMoveEventHandler(this.axMap1_MouseMoveEvent); // // textBox1 // this.textBox1.Location = new System.Drawing.Point(168, 64); this.textBox1.Name = "textBox1"; this.textBox1.Size = new System.Drawing.Size(80, 21); this.textBox1.TabIndex = 1; this.textBox1.Text = "textBox1"; // // timer1 // this.timer1.Enabled = true; this.timer1.Tick += new System.EventHandler(this.timer1_Tick); // // Form1 // this.AutoScaleBaseSize = new System.Drawing.Size(6, 14); this.ClientSize = new System.Drawing.Size(496, 285); this.Controls.Add(this.textBox1); this.Controls.Add(this.axMap1); this.Name = "Form1"; this.Text = "Form1"; this.Load += new System.EventHandler(this.Form1_Load); ((System.ComponentModel.ISupportInitialize)(this.axMap1)).EndInit(); this.ResumeLayout(false);</P> <P> } #endregion</P> <P> /// <SUMMARY> /// 应用程序的主入口点。 /// </SUMMARY> [STAThread] static void Main() { Application.Run(new Form1()); }</P> <P> private void Form1_Load(object sender, System.EventArgs e) { MapObjects2.IMoDataConnection dc; MapObjects2.IMoMapLayer layer; dc=new MapObjects2.DataConnectionClass(); <a href='mailtdc.Database=@"f:\data\usa' target="_blank" >dc.Database=@"f:\data\usa</A>"; if (!dc.Connect()) { MessageBox.Show("无法连"); } else { layer=new MapObjects2.MapLayerClass(); layer.GeoDataset=dc.FindGeoDataset("STATES"); axMap1.Layers.Add(layer);</P> <P> </P> <P> tips=new maptips2(); tips.initialize(axMap1,timer1,textBox1); tips.setlay(layer,"STATE_NAME");</P> <P>} }</P> <P> private void axMap1_MouseDownEvent(object sender, AxMapObjects2._DMapEvents_MouseDownEvent e) { MapObjects2.Rectangle r; r= new MapObjects2.RectangleClass(); r=axMap1.TrackRectangle() ;</P> <P> axMap1.Extent=r;</P> <P> }</P> <P> private void axMap1_MouseMoveEvent(object sender, AxMapObjects2._DMapEvents_MouseMoveEvent e) { this.tips.mousemove(e.x,e.y ); }</P> <P> private void timer1_Tick(object sender, System.EventArgs e) { this.tips.timer(); } } }</P> <P>//类</P> <P>using System; using MapObjects2;</P> <P>namespace WindowsApplication67 { /// <SUMMARY> /// maptips2 的摘要说明。 /// </SUMMARY> public class maptips2 { public maptips2() { // // TOD 在此处添加构造函数逻辑 // } protected int m_x; protected int m_y; protected int m_lastx; protected int m_lasty; protected AxMapObjects2.AxMap axMap1; protected System.Windows.Forms.Timer m_time; protected System.Windows.Forms.TextBox m_edit; protected MapObjects2.IMoMapLayer m_layer; protected string m_field; protected MapObjects2.Recordset m_recs;</P> <P> public void doseach() { MapObjects2.Point pt; pt=new MapObjects2.PointClass(); pt=axMap1.ToMapPoint(m_x,m_y); if (m_layer.shapeType.ToString()=="23") { m_recs=m_layer.SearchShape(pt,MapObjects2.SearchMethodConstants.moPointInPolygon ,""); </P> <P> } else { m_recs=m_layer.SearchByDistance(pt,axMap1.ToMapDistance(10),"");</P> <P> } </P> <P> } public void initialize(AxMapObjects2.AxMap map,System.Windows.Forms.Timer tmr,System.Windows.Forms.TextBox edit ) { axMap1=map; m_time=tmr; m_edit=edit; m_edit.Visible=false;</P> <P> } public void mousemove(int x,int y) { if ( m_time.Interval==1) { m_x=x; m_y=y; m_time.Interval=100; } else { m_edit.Visible=false;</P> <P> } } public void setlay(MapObjects2.IMoMapLayer layer,string fid) { m_layer=layer; m_field=fid;</P> <P> } public void showtiptext(string text) { m_edit.Text=text; m_edit.Visible=true; m_edit.Left=axMap1.Left+m_x; m_edit.Top =axMap1.Top+m_y+20;</P> <P> } public void timer() { string s; MapObjects2.IMoFields flds; MapObjects2.IMoField fld ; if ((m_x==m_lastx);;(m_y==m_lasty)) { m_time.Interval=1; doseach(); if(m_recs.EOF ) { m_edit.Visible=false;</P> <P> } else { flds=m_recs.Fields ; fld= flds.Item(m_field); s=fld.Value.ToString(); this.showtiptext(s);</P> <P> } } else { m_lastx=m_x; m_lasty=m_y;</P> <P> }</P> <P> }</P> <P> } } </P> |
|
|
1楼#
发布于:2007-11-18 20:54
<P>不行啊 为什么……困惑中</P>
|
|
2楼#
发布于:2006-07-12 15:39
<P>辛苦~~~支持</P>
|
|
|
3楼#
发布于:2006-07-07 08:29
<P>感谢! </P>
<P><img src="images/post/smile/dvbbs/em02.gif" /></P> <P> </P> |
|