using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.Controls;
using System.Runtime.InteropServices;
using ESRI.ArcGIS.Display; namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} double xmin, ymin, xmax, ymax;
double Xmin, Ymin, Xmax, Ymax;
int Xvalue = ;
int Yvalue = ;
int Xlarge = ;
int Ylarge = ;
double heightFullenv, h, widthFullEnv, w;
double initScale = 0d;
int vscrollMaxium = ;
int hscrollMaxium = ; IEnvelope pEnvMap = null;
IMapControl2 pMapControl = null;
private void axMapControl1_OnExtentUpdated(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnExtentUpdatedEvent e)
{
pEnvMap = e.newEnvelope as IEnvelope;
pMapControl = axMapControl1.Object as IMapControl2;
if(initScale < )
initScale = pMapControl.MapScale; xmin = pEnvMap.XMin;
ymin = pEnvMap.YMin;
xmax = pEnvMap.XMax;
ymax = pEnvMap.YMax;
w = pEnvMap.Width;
h = pEnvMap.Height;
lblLeftBottom.Text = Math.Round(pEnvMap.XMin,).ToString() + "," + Math.Round(pEnvMap.YMin,).ToString();
lblRightTop.Text = Math.Round(pEnvMap.XMax, ).ToString() + "," + Math.Round(pEnvMap.YMax, ).ToString();
lblw.Text = pEnvMap.Width.ToString(); IEnvelope pEnvFull = pMapControl.ActiveView.FullExtent as IEnvelope;
Xmin = pEnvFull.XMin;
Ymin = pEnvFull.YMin;
Xmax = pEnvFull.XMax;
Ymax = pEnvFull.YMax;
widthFullEnv = pEnvFull.Width;
heightFullenv = pEnvFull.Height;
lblLeftBottomFull.Text = Math.Round(pEnvFull.XMin, ).ToString() + "," + Math.Round(pEnvFull.YMin, ).ToString();
lblRightTopFull.Text = Math.Round(pEnvFull.XMax, ).ToString() + "," + Math.Round(pEnvFull.YMax, ).ToString();
lblWf.Text = pEnvFull.Width.ToString(); if (Ymax > ymax && ymin > Ymin)
{
vscrollMaxium = (int)(heightFullenv / );
Yvalue = (int)( (Ymax - ymax) / );
Ylarge = (int)(h / );
if (Yvalue + Ylarge > vscrollMaxium)
{
Yvalue = vscrollMaxium - Ylarge;
}
}
else if (ymax > Ymax)
{
vscrollMaxium = (int)((ymax - Ymin) / );
Yvalue = ;
Ylarge = (int)(h / );
}
else if (Ymin > ymin)
{
vscrollMaxium = (int)((Ymax - ymin) / );
Ylarge = (int)(h / );
Yvalue = vscrollMaxium - Ylarge + ;
}
this.vScrollBar1.Maximum = vscrollMaxium;
this.vScrollBar1.LargeChange = Ylarge;
this.vScrollBar1.Value = Yvalue;
this.vScrollBar1.SmallChange = (int)( * (initScale / pMapControl.MapScale)); if (Xmax > xmax && xmin > Xmin)
{
hscrollMaxium = (int)(widthFullEnv / );
Xvalue = (int)((xmin - Xmin) / );
Xlarge = (int)(w / );
if (Xvalue + Xlarge > hscrollMaxium)
{
Xvalue = hscrollMaxium - Xlarge;
}
}
else if (xmax > Xmax)
{
hscrollMaxium = (int)((xmax - Xmin) / );
Xlarge = (int)(w / );
Xvalue = hscrollMaxium - Xlarge + ;
}
else if (Xmin > xmin)
{
hscrollMaxium = (int)((Xmax - xmin) / );
Xvalue = ;
Xlarge = (int)(w / );
}
this.hScrollBar1.Maximum = hscrollMaxium;
this.hScrollBar1.LargeChange = Xlarge;
this.hScrollBar1.Value = Xvalue;
this.hScrollBar1.SmallChange = (int)( * (initScale / pMapControl.MapScale)); lblYscroll.Text = "Large:" + Ylarge.ToString() + ",Value:" + Yvalue.ToString() +
",Small:" + vScrollBar1.SmallChange.ToString() + ",Max:" + vScrollBar1.Maximum.ToString();
} private void btnSetDemo_Click(object sender, EventArgs e)
{
int max = ;
int value = ;
int smallchange = ;
int largechange = ;
int.TryParse(this.txtSmallChange.Text, out smallchange);
int.TryParse(this.txtMaxinum.Text, out max);
int.TryParse(this.txtValue.Text, out value);
int.TryParse(txtLargeChange.Text, out largechange);
this.vScrollBar3.Maximum = max;
this.vScrollBar3.SmallChange = smallchange;
this.vScrollBar3.LargeChange = largechange;
this.vScrollBar3.Value = value;
} private void vScrollBar1_Scroll(object sender, ScrollEventArgs e)
{
this.axMapControl1.OnExtentUpdated -= this.axMapControl1_OnExtentUpdated;
double newheight = (e.OldValue - e.NewValue) * ;
pEnvMap.Offset(, newheight);
this.pMapControl.Extent = pEnvMap;
this.axMapControl1.OnExtentUpdated += this.axMapControl1_OnExtentUpdated;
} private void hScrollBar1_Scroll(object sender, ScrollEventArgs e)
{
this.axMapControl1.OnExtentUpdated -= this.axMapControl1_OnExtentUpdated;
double w = (e.NewValue - e.OldValue) * ;
pEnvMap.Offset(w, );
this.pMapControl.Extent = pEnvMap;
this.axMapControl1.OnExtentUpdated += this.axMapControl1_OnExtentUpdated;
} }
}

backup_code

scrollbar_test的更多相关文章

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

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

随机推荐

  1. JS-学习-DOM元素尺寸和位置

    一,获取元素的css大小 1.通过style内联获取元素的大小 var box = document.getElementById('box');    // 获得元素;     box.style. ...

  2. Chapter 1: Design the application architecture

    1.1 Plan the application layers 提到了repository pattern,SoC(Separation of Concern), 进而提及MVC,Action/Act ...

  3. 查看旧版jexus命令

    查看jexus版本 curl http://localhost/info

  4. TOMCAT 无法安装P7B格式的证书

    背景:通过按以下链接的方式生成了CSR文件,并申请到P7B格式的证书 现象:TOMCAT安装该证书时,要求输入Keystore key, 但是P7B证书自身并不携带私钥.导致无法通过TOMCAT安装该 ...

  5. Head First 设计模式之命令模式(CommandPattern)

    前言: 本章会将封装带入到一个全新的境界,把方法调用封装起来.通过封装方法调用,把运算块包装成形.调用此运算的对象不需要知道事情是如何进行的,只要知道如何使用包装形成的方法来完成它就ok了. 1 现实 ...

  6. [2015.07.27]万峰图片批量处理专家 v8.6

    万峰图片批量处理专家,界面简洁易用,功能强大实用.支持多种处理任务同时按顺序执行,真正的批量图片,批量效果处理.支持图片批量自定义的放大缩小,旋转或者翻转,支持图片格式批量转换.支持图片批量文字水印, ...

  7. 升级Win2010后, 打开SQL2008 附加数据库提示 5120错误

    在win2010系统上使用sql2008进行附加数据库(包括在x86系统正在使用的数据库文件,直接拷贝附加在X64系统中)时,提示无法打开文件,5120错误. 这个错误是因为没有操作权限,所以附加的时 ...

  8. Linux环境下SVN服务器端的安装与配置

    最近尝试了下在Linux(CentOS6.5)环境下安装与配置SVN服务器端,安装过程中碰到了一些问题,参看了网友们分享的一些心得,并通过自己实际的操作,最终安装与配置成功!总的来说网上的说法芸芸,大 ...

  9. 项目中Zookeeper配置参数笔记

    ZooKeeper是以Fast Paxos算法为基础的,Paxos 算法存在活锁的问题,即当有多个proposer交错提交时,有可能互相排斥导致没有一个proposer能提交成功,而Fast Paxo ...

  10. SpringMVC使用的几个要点

    1.使用 @RequestParam("username") 来对应参数名的时候,这个参数必须要传入,否则会报错.没加@RequestParam则可传可不传 @RequestMap ...