当前位置: 首页 > 编程语言 > C#

从鼠标光标在屏幕上的位置获取图像坐标(WPF图像控件)分享

时间:2023-04-11 01:41:51 C#

从鼠标光标在屏幕上的位置获取图像坐标(WPF图像控件)控件和缩放功能的解决方案,我找到了由Wies?aw?oltés和KonradViltersten开发的解决方案https://stackoverflow.com/a/6782715/584180,非常好。现在我想向控件添加一个“鼠标单击”事件,这样我就可以在原始图像坐标系中获得单击的坐标,这样我就可以使用它们来检索像素颜色。我知道会有一些舍入,如果图像按比例缩小,颜色将与屏幕上显示的实际颜色不一致。我也明白用户可能会点击图像边界外,在这种情况下我想返回空点或负坐标。我不是C#进行转换的专家,目前我坚持这个(将添加到ZoomBorder.cs类中):publicPointGetImageCoordsAt(MouseButtonEventArgse){if(child!=null){vartt=GetTranslateTransform(孩子);varmousePos=e.GetPosition(this);vartransformOrigin=newPoint(tt.X,tt.Y);返回鼠标位置;//错误:我该如何转换它?}返回空值;}作为mm8建议你可以使用e.GetPosition(child);得到你想要的位置e.GetPosition(child);,不需要做任何转换。出于测试目的,我已经覆盖了重置行为。使用您提供的链接中的代码,更改voidchild_PreviewMouseRightButtonDown(objectsender,MouseButtonEventArgse){this.Reset();}topublicPointGetImageCoordsAt(MouseButtonEventArgse){if(child!=null&&child.IsMouseOver){returne.GetPosition(child);}返回新点(-1,-1);}voidchild_PreviewMouseRightButtonDown(objectsender,MouseButtonEventArgse){MessageBox.Show(GetImageCoordsAt(e).ToString());如果在中的相同位置右键单击图像,无论平移和缩放如何,您都将获得(大约)相同的坐标。为了将来参考,我想要实现的是:varimageControl=this.ChildasImage;varmainViewModel=((MainViewModel)base.DataContext);if(imageControl!=null&&imageControl.Source!=null){//从控制空间转换到图像空间varx=Math.Floor(controlSpacePosition.X*imageControl.Source.Width/imageControl.ActualWidth);vary=Math.Floor(controlSpacePosition.Y*imageControl.Source.Height/imageControl.ActualHeight);返回新点(x,y);}}返回新点(-1,-1);}返回鼠标指针在原始图形系统中的坐标。以上就是《C#学习教程:从鼠标光标在屏幕上的位置获取图像坐标(WPF图像控件)》的全部内容分享。如果对你有用,需要了解更多C#学习教程,希望大家多多关注——本文来自网络收藏,不代表立场,如涉及侵权,请点击有权联系管理员删除。如需转载请注明出处: