C# GDAL 数字图像处理Part4 获得鼠标位置的地理坐标

        其实在程序设计中,很大部分的工作量都在搞懂Winform的各种控件及其接口,网上的讲解质量也良莠不齐,所以如何使用控件也是一个很苦恼的问题(舍友深受困扰:怎么没有系统性讲Winform的资料)。我也在考虑要不要写一下文章讲讲comboBox、listView、tabControl、pictureBox、treeView之类的控件,因为写起来也很费时费事(21届的同学看到的时候我应该大四了说不定会有时间来灌水,如果需要可以评论或者私信我哈哈哈哈),之后再考虑。

        回归正题,这篇文章写的,如何获得鼠标的地理位置?

        在Gdal中给我们提供了这样一个函数:

        Mydataset.GetGeoTransform(double[] argout);

        传入的参数应该是一个长度为6的double数组,执行代码之后数组就会被赋值。这六个参数的用法是:

        GeoX = argout[0] + argout[1] * x + argout[2] * y

        GeoY = argout[3] + argout[4] * x + argout[5] * y

        GeoX与GeoY就是地理坐标,xy是在原始Image上的位置。注意,这里说的是 原始Image 。就是说,通过缩放后显示的Bmp图像,读取鼠标在其上的坐标,应该换算成在原始Image上的坐标。其实换算也很简单:

        原始的X坐标 = 鼠标在BMP上的X坐标 * (Dataset的宽度 / BMP的宽度)

        原始的Y坐标 = 鼠标在BMP上的Y坐标 * (Dataset的高度 / BMP的高度)

        这里建议大家,可以把(Dataset的宽度 / BMP的宽度)(Dataset的高度 / BMP的高度)作为缩放因子放到类成员变量中存储起来,以便之后的使用。

        至于怎么获得鼠标在PictureBox上的坐标呢?我们点击PictureBox,打开它的属性,点击事件(闪电),我们可以看到 鼠标/Mouse 事件,双击其中需要选用的事件,C#会自动生成一个函数,如下:

private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
        {
            
        }

        我们使用  e.X  与  e.Y  便可以访问鼠标相对于控件左上角的坐标啦~

        好,这一篇博文便写到这儿(准备下课了 ^-^ )

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值