1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using ESRI.ArcGIS.Geometry;
  10. using ESRI.ArcGIS.Controls;
  11. using System.Runtime.InteropServices;
  12. using ESRI.ArcGIS.Display;
  13.  
  14. namespace WindowsFormsApplication2
  15. {
  16. public partial class Form1 : Form
  17. {
  18. public Form1()
  19. {
  20. InitializeComponent();
  21. }
  22.  
  23. double xmin, ymin, xmax, ymax;
  24. double Xmin, Ymin, Xmax, Ymax;
  25. int Xvalue = ;
  26. int Yvalue = ;
  27. int Xlarge = ;
  28. int Ylarge = ;
  29. double heightFullenv, h, widthFullEnv, w;
  30. double initScale = 0d;
  31. int vscrollMaxium = ;
  32. int hscrollMaxium = ;
  33.  
  34. IEnvelope pEnvMap = null;
  35. IMapControl2 pMapControl = null;
  36. private void axMapControl1_OnExtentUpdated(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnExtentUpdatedEvent e)
  37. {
  38. pEnvMap = e.newEnvelope as IEnvelope;
  39. pMapControl = axMapControl1.Object as IMapControl2;
  40. if(initScale < )
  41. initScale = pMapControl.MapScale;
  42.  
  43. xmin = pEnvMap.XMin;
  44. ymin = pEnvMap.YMin;
  45. xmax = pEnvMap.XMax;
  46. ymax = pEnvMap.YMax;
  47. w = pEnvMap.Width;
  48. h = pEnvMap.Height;
  49. lblLeftBottom.Text = Math.Round(pEnvMap.XMin,).ToString() + "," + Math.Round(pEnvMap.YMin,).ToString();
  50. lblRightTop.Text = Math.Round(pEnvMap.XMax, ).ToString() + "," + Math.Round(pEnvMap.YMax, ).ToString();
  51. lblw.Text = pEnvMap.Width.ToString();
  52.  
  53. IEnvelope pEnvFull = pMapControl.ActiveView.FullExtent as IEnvelope;
  54. Xmin = pEnvFull.XMin;
  55. Ymin = pEnvFull.YMin;
  56. Xmax = pEnvFull.XMax;
  57. Ymax = pEnvFull.YMax;
  58. widthFullEnv = pEnvFull.Width;
  59. heightFullenv = pEnvFull.Height;
  60. lblLeftBottomFull.Text = Math.Round(pEnvFull.XMin, ).ToString() + "," + Math.Round(pEnvFull.YMin, ).ToString();
  61. lblRightTopFull.Text = Math.Round(pEnvFull.XMax, ).ToString() + "," + Math.Round(pEnvFull.YMax, ).ToString();
  62. lblWf.Text = pEnvFull.Width.ToString();
  63.  
  64. if (Ymax > ymax && ymin > Ymin)
  65. {
  66. vscrollMaxium = (int)(heightFullenv / );
  67. Yvalue = (int)( (Ymax - ymax) / );
  68. Ylarge = (int)(h / );
  69. if (Yvalue + Ylarge > vscrollMaxium)
  70. {
  71. Yvalue = vscrollMaxium - Ylarge;
  72. }
  73. }
  74. else if (ymax > Ymax)
  75. {
  76. vscrollMaxium = (int)((ymax - Ymin) / );
  77. Yvalue = ;
  78. Ylarge = (int)(h / );
  79. }
  80. else if (Ymin > ymin)
  81. {
  82. vscrollMaxium = (int)((Ymax - ymin) / );
  83. Ylarge = (int)(h / );
  84. Yvalue = vscrollMaxium - Ylarge + ;
  85. }
  86. this.vScrollBar1.Maximum = vscrollMaxium;
  87. this.vScrollBar1.LargeChange = Ylarge;
  88. this.vScrollBar1.Value = Yvalue;
  89. this.vScrollBar1.SmallChange = (int)( * (initScale / pMapControl.MapScale));
  90.  
  91. if (Xmax > xmax && xmin > Xmin)
  92. {
  93. hscrollMaxium = (int)(widthFullEnv / );
  94. Xvalue = (int)((xmin - Xmin) / );
  95. Xlarge = (int)(w / );
  96. if (Xvalue + Xlarge > hscrollMaxium)
  97. {
  98. Xvalue = hscrollMaxium - Xlarge;
  99. }
  100. }
  101. else if (xmax > Xmax)
  102. {
  103. hscrollMaxium = (int)((xmax - Xmin) / );
  104. Xlarge = (int)(w / );
  105. Xvalue = hscrollMaxium - Xlarge + ;
  106. }
  107. else if (Xmin > xmin)
  108. {
  109. hscrollMaxium = (int)((Xmax - xmin) / );
  110. Xvalue = ;
  111. Xlarge = (int)(w / );
  112. }
  113. this.hScrollBar1.Maximum = hscrollMaxium;
  114. this.hScrollBar1.LargeChange = Xlarge;
  115. this.hScrollBar1.Value = Xvalue;
  116. this.hScrollBar1.SmallChange = (int)( * (initScale / pMapControl.MapScale));
  117.  
  118. lblYscroll.Text = "Large:" + Ylarge.ToString() + ",Value:" + Yvalue.ToString() +
  119. ",Small:" + vScrollBar1.SmallChange.ToString() + ",Max:" + vScrollBar1.Maximum.ToString();
  120. }
  121.  
  122. private void btnSetDemo_Click(object sender, EventArgs e)
  123. {
  124. int max = ;
  125. int value = ;
  126. int smallchange = ;
  127. int largechange = ;
  128. int.TryParse(this.txtSmallChange.Text, out smallchange);
  129. int.TryParse(this.txtMaxinum.Text, out max);
  130. int.TryParse(this.txtValue.Text, out value);
  131. int.TryParse(txtLargeChange.Text, out largechange);
  132. this.vScrollBar3.Maximum = max;
  133. this.vScrollBar3.SmallChange = smallchange;
  134. this.vScrollBar3.LargeChange = largechange;
  135. this.vScrollBar3.Value = value;
  136. }
  137.  
  138. private void vScrollBar1_Scroll(object sender, ScrollEventArgs e)
  139. {
  140. this.axMapControl1.OnExtentUpdated -= this.axMapControl1_OnExtentUpdated;
  141. double newheight = (e.OldValue - e.NewValue) * ;
  142. pEnvMap.Offset(, newheight);
  143. this.pMapControl.Extent = pEnvMap;
  144. this.axMapControl1.OnExtentUpdated += this.axMapControl1_OnExtentUpdated;
  145. }
  146.  
  147. private void hScrollBar1_Scroll(object sender, ScrollEventArgs e)
  148. {
  149. this.axMapControl1.OnExtentUpdated -= this.axMapControl1_OnExtentUpdated;
  150. double w = (e.NewValue - e.OldValue) * ;
  151. pEnvMap.Offset(w, );
  152. this.pMapControl.Extent = pEnvMap;
  153. this.axMapControl1.OnExtentUpdated += this.axMapControl1_OnExtentUpdated;
  154. }
  155.  
  156. }
  157. }

backup_code

scrollbar_test的更多相关文章

  1. Unity3D学习笔记——NGUI之UIScrollBar

    UIScrollBar:这个组件可以用于创建滚动条. 效果图如下: 一:使用步骤 1.这个组件和UISlider很像,也是由三部分组成. 2.首先创建一个Sprite用于组件的背景色. 3.创建第二个 ...

随机推荐

  1. bzoj1188 [HNOI2007]分裂游戏 博弈论 sg函数的应用

    1188: [HNOI2007]分裂游戏 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 973  Solved: 599[Submit][Status ...

  2. ACM water

    1000  纯属适应题 1003  做的时候花了很久,现在看好像也不难 1004  适应题,求下平均就行 1005  要读懂题就行 1007  逆序数,discuss方法 1046  全部暴搜一遍.. ...

  3. git tool

    1. install apt-get install git 2. 使用 ssh-keygen -C "email" -t rsa  生成一个ssh pub key,将生成的id_ ...

  4. MyBatis学习(二)

    前言 昨天的博客简单的记录了MyBatis的起源.作用.配置以及一个简单的查询例子.写到一半的时候,觉得已经学会了MyBatis,可是全写完的时候才发现,如果多个参数查询,如何表的名字与类字段名不一样 ...

  5. 10天学会phpWeChat——第七天:创建一个自适应PC网站+H5移动端的模块

    本教程基于phpWeChat核心框架1.1.0+版本.下载地址:http://s.phpwechat.com/app_38026ed22fc1a91d92b5d2ef93540f20 通过前面六讲的系 ...

  6. iScroll知识点

    1.如果你有一个复杂的DOM结构,最好在onload事件之后适当的延迟,再去初始化iScroll.最好给浏览器100或者200毫秒的间隙再去初始化iScroll. 2.iScroll作用于滚动区域的外 ...

  7. caffe初步实践---------使用训练好的模型完成语义分割任务

    caffe刚刚安装配置结束,乘热打铁! (一)环境准备 前面我有两篇文章写到caffe的搭建,第一篇cpu only ,第二篇是在服务器上搭建的,其中第二篇因为硬件环境更佳我们的步骤稍显复杂.其实,第 ...

  8. Ionic开发实战

    转自:http://blog.csdn.net/i348018533/article/details/47258449/ 折磨的两个月!Ionic从零单排,到项目发布!遇到了很多问题但都一一解决了,此 ...

  9. MySQL的基本操作

    1. 查看数据库 语法 #show databases; 2. 添加数据库 语法: #create database demo; 3. 删除数据库 语法: #drop database demo; 4 ...

  10. JVM1.6 GC详解

    前言  JVM GC是JVM的内存回收算法,调整JVM GC(Garbage Collection),可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java程序的工作效率. ...