其实在程序设计中,很大部分的工作量都在搞懂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 便可以访问鼠标相对于控件左上角的坐标啦~文章来源:https://www.toymoban.com/news/detail-499545.html
好,这一篇博文便写到这儿(准备下课了 ^-^ )文章来源地址https://www.toymoban.com/news/detail-499545.html
到了这里,关于C# GDAL 数字图像处理Part4 获得鼠标位置的地理坐标的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!