栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

WPF 使用e.GetPosition获取Image控件坐标时,Image.Source是否为null对获取坐标结果的影响

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

WPF 使用e.GetPosition获取Image控件坐标时,Image.Source是否为null对获取坐标结果的影响

今天做项目时,想要获取Canvas中的一个Image控件的相对坐标。发现获取到鼠标按下的坐标值总是对不上。经过反复的尝试,发现Image控件的Source是否为空会对获取坐标的结果有影响。举个例子吧,在Grid中放置一个Canvas,在后台代码中添加一个image控件。

xaml


    
        
        
    

xaml.cs

先把image.Source源注释掉

 /// 
    /// MainWindow.xaml 的交互逻辑
    /// 
    public partial class MainWindow : Window
    {
        Image image;
        public MainWindow()
        {
            InitializeComponent();
            image = new Image();
            image.Width = 100;
            image.Height = 100;
            //image.Source = new BitmapImage(new Uri("指纹特征图.jpg", UriKind.Relative));
            Canvas.SetLeft(image,0);
            Canvas.SetTop(image,0);
            canvas.Children.Add(image);
        }

        private void canvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            Point canvasPoint = e.GetPosition(canvas);
            Point imagePoint = e.GetPosition(image);
            Console.WriteLine(canvasPoint.X.ToString(), canvasPoint.Y.ToString());
            Console.WriteLine(imagePoint.X.ToString(), imagePoint.Y.ToString());
        }
    }

Xaml效果图:

Canvas的宽和高是200,image的宽和高是100,当image.Source为Null时,不显示图片。其实image就在Canvas的左上角。那就点击100,100以内的任意一个点。

看到了吧,我点击的同一个点,从canvas获取的值和从image获取的值时不一致的。那我们把image.Source付给一个图片。然后继续测试。

这次的坐标值就一致了,经过我的测试。发现如果image.Source= null,image的坐标原点就不是左上角了,是以image的中心点作为原点的。所以要注意了,image.Source是不是null,会对获取的坐标结果有影响的。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/907481.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号