• scrollbar_test


      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 
     24         double xmin, ymin, xmax, ymax;
     25         double Xmin, Ymin, Xmax, Ymax;
     26         int Xvalue = 0;
     27         int Yvalue = 0;
     28         int Xlarge = 0;
     29         int Ylarge = 0;
     30         double heightFullenv, h, widthFullEnv, w;
     31         double initScale = 0d;
     32         int vscrollMaxium = 0;
     33         int hscrollMaxium = 0;
     34 
     35         IEnvelope pEnvMap = null;
     36         IMapControl2 pMapControl = null;
     37         private void axMapControl1_OnExtentUpdated(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnExtentUpdatedEvent e)
     38         {
     39             pEnvMap = e.newEnvelope as IEnvelope;
     40             pMapControl = axMapControl1.Object as IMapControl2;
     41             if(initScale < 1)
     42                 initScale = pMapControl.MapScale;
     43 
     44             xmin = pEnvMap.XMin;
     45             ymin = pEnvMap.YMin;
     46             xmax = pEnvMap.XMax;
     47             ymax = pEnvMap.YMax;
     48             w = pEnvMap.Width;
     49             h = pEnvMap.Height;
     50             lblLeftBottom.Text = Math.Round(pEnvMap.XMin,2).ToString() + "," + Math.Round(pEnvMap.YMin,2).ToString();
     51             lblRightTop.Text = Math.Round(pEnvMap.XMax, 2).ToString() + "," + Math.Round(pEnvMap.YMax, 2).ToString();
     52             lblw.Text = pEnvMap.Width.ToString();
     53 
     54 
     55             IEnvelope pEnvFull = pMapControl.ActiveView.FullExtent as IEnvelope;
     56             Xmin = pEnvFull.XMin;
     57             Ymin = pEnvFull.YMin;
     58             Xmax = pEnvFull.XMax;
     59             Ymax = pEnvFull.YMax;
     60             widthFullEnv = pEnvFull.Width;
     61             heightFullenv = pEnvFull.Height;
     62             lblLeftBottomFull.Text = Math.Round(pEnvFull.XMin, 2).ToString() + "," + Math.Round(pEnvFull.YMin, 2).ToString();
     63             lblRightTopFull.Text = Math.Round(pEnvFull.XMax, 2).ToString() + "," + Math.Round(pEnvFull.YMax, 2).ToString();
     64             lblWf.Text = pEnvFull.Width.ToString();
     65 
     66 
     67             if (Ymax > ymax && ymin > Ymin)
     68             {
     69                 vscrollMaxium = (int)(heightFullenv / 100);
     70                 Yvalue = (int)( (Ymax - ymax) / 100);
     71                 Ylarge = (int)(h / 100);
     72                 if (Yvalue + Ylarge > vscrollMaxium)
     73                 {
     74                     Yvalue = vscrollMaxium - Ylarge;
     75                 }                
     76             }
     77             else if (ymax > Ymax)
     78             {
     79                 vscrollMaxium = (int)((ymax - Ymin) / 100);
     80                 Yvalue = 0;
     81                 Ylarge = (int)(h / 100);
     82             }
     83             else if (Ymin > ymin)
     84             {
     85                 vscrollMaxium = (int)((Ymax - ymin) / 100);
     86                 Ylarge = (int)(h / 100);
     87                 Yvalue = vscrollMaxium - Ylarge + 3;
     88             }
     89             this.vScrollBar1.Maximum = vscrollMaxium;
     90             this.vScrollBar1.LargeChange = Ylarge;
     91             this.vScrollBar1.Value = Yvalue;
     92             this.vScrollBar1.SmallChange = (int)(4 * (initScale / pMapControl.MapScale));
     93 
     94 
     95             if (Xmax > xmax && xmin > Xmin)
     96             {
     97                 hscrollMaxium = (int)(widthFullEnv / 100);
     98                 Xvalue = (int)((xmin - Xmin) / 100);
     99                 Xlarge = (int)(w / 100);
    100                 if (Xvalue + Xlarge > hscrollMaxium)
    101                 {
    102                     Xvalue = hscrollMaxium - Xlarge;
    103                 }
    104             }
    105             else if (xmax > Xmax)
    106             {
    107                 hscrollMaxium = (int)((xmax - Xmin) / 100);
    108                 Xlarge = (int)(w / 100);
    109                 Xvalue = hscrollMaxium - Xlarge + 3;
    110             }
    111             else if (Xmin > xmin)
    112             {
    113                 hscrollMaxium = (int)((Xmax - xmin) / 100);
    114                 Xvalue = 0;
    115                 Xlarge = (int)(w / 100);
    116             }
    117             this.hScrollBar1.Maximum = hscrollMaxium;
    118             this.hScrollBar1.LargeChange = Xlarge;
    119             this.hScrollBar1.Value = Xvalue;
    120             this.hScrollBar1.SmallChange = (int)(4 * (initScale / pMapControl.MapScale));
    121 
    122 
    123 
    124             lblYscroll.Text = "Large:" + Ylarge.ToString() + ",Value:" + Yvalue.ToString() +
    125                 ",Small:" + vScrollBar1.SmallChange.ToString() + ",Max:" + vScrollBar1.Maximum.ToString();
    126         }
    127 
    128 
    129         private void btnSetDemo_Click(object sender, EventArgs e)
    130         {
    131             int max = 0;
    132             int value = 0;
    133             int smallchange = 0;
    134             int largechange = 0;
    135             int.TryParse(this.txtSmallChange.Text, out smallchange);
    136             int.TryParse(this.txtMaxinum.Text, out max);
    137             int.TryParse(this.txtValue.Text, out value);
    138             int.TryParse(txtLargeChange.Text, out largechange);
    139             this.vScrollBar3.Maximum = max;
    140             this.vScrollBar3.SmallChange = smallchange;
    141             this.vScrollBar3.LargeChange = largechange;
    142             this.vScrollBar3.Value = value;
    143         }
    144 
    145         private void vScrollBar1_Scroll(object sender, ScrollEventArgs e)
    146         {
    147             this.axMapControl1.OnExtentUpdated -= this.axMapControl1_OnExtentUpdated;
    148             double newheight = (e.OldValue - e.NewValue) * 100;
    149             pEnvMap.Offset(0, newheight);
    150             this.pMapControl.Extent = pEnvMap;
    151             this.axMapControl1.OnExtentUpdated += this.axMapControl1_OnExtentUpdated;
    152         }
    153 
    154         private void hScrollBar1_Scroll(object sender, ScrollEventArgs e)
    155         {
    156             this.axMapControl1.OnExtentUpdated -= this.axMapControl1_OnExtentUpdated;
    157             double w = (e.NewValue - e.OldValue) * 100;
    158             pEnvMap.Offset(w, 0);
    159             this.pMapControl.Extent = pEnvMap;
    160             this.axMapControl1.OnExtentUpdated += this.axMapControl1_OnExtentUpdated;
    161         }
    162 
    163 
    164     }
    165 }
    backup_code
  • 相关阅读:
    python的正则表达式 re-------可以在字符串前加上 r 这个前缀来避免部分疑惑,因为 r 开头的python字符串是 raw 字符串,所以里面的所有字符都不会被转义
    mysql中max_allowed_packet参数的配置方法(避免大数据写入或者更新失败)
    提交 git 项目 到 github 在 centos 7
    常用正则表达式大全 (转)
    如何让vim编辑器永久显示行号
    Ubuntu下忘记MySQL密码重设方法
    Base64复习
    好用的正则表达式工具
    64位centos下安装python的PIL模块
    springboot中使用servlet通过配置类
  • 原文地址:https://www.cnblogs.com/yansc/p/6237447.html
Copyright © 2020-2023  润新知