C# 如何计算正确的坐标?

C# 如何计算正确的坐标?,c#,wpf,wpf-controls,coordinates,C#,Wpf,Wpf Controls,Coordinates,我需要帮助。我有一个Picturebox,现在想计算图片上的给定坐标,然后在标签中播放它们。我怎样才能做到最好 如图所示。 如果然后单击上面的图像,则数据将输入到列表框中 谢谢你的帮助 我的图片在这里:在WPF中,这一次可能是最难的。WPF/UWP是为MVVM设计的,除了在MVVM之外编程的初学者之外,我不认识其他人。我想不出用MVVM做这件事的方法 PictureBox也是WinForms元素。被称为 像这样的导航设备不是一件小事。其中一个原因是它的数量如此之少。但这可以归结为几个步骤: 获取

我需要帮助。我有一个Picturebox,现在想计算图片上的给定坐标,然后在标签中播放它们。我怎样才能做到最好

如图所示。 如果然后单击上面的图像,则数据将输入到列表框中

谢谢你的帮助


我的图片在这里:

在WPF中,这一次可能是最难的。WPF/UWP是为MVVM设计的,除了在MVVM之外编程的初学者之外,我不认识其他人。我想不出用MVVM做这件事的方法

PictureBox也是WinForms元素。被称为

像这样的导航设备不是一件小事。其中一个原因是它的数量如此之少。但这可以归结为几个步骤:

  • 获取所单击的x和y像素坐标,以及与图像整体显示大小的关系。通常情况下,MouseClick事件将是实现这一点的工具,但我找不到它。MouseDown或LeftMouseDown是最近的事件

  • 如果显示整个图像时没有缩放或裁剪,那么现在只需要简单的数学运算。如果是X轴的20%和Y轴的21%,那么很容易计算出X轴的20%和Y轴的21%在源图像上的位置

  • 如果存在任何缩放或裁剪,则必须将其考虑在内,否则为2

  • 将图像像素位置与已知的坐标相等

  • 第1部分看起来像这样,需要在图像的MouseDown或LeftMouseDown事件中注册:

    private void ContentControl_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
    {
      //Unpack the sender
      Image source = (Image)Sender;
    
      //Get the click point
      Point clickPoint = e.GetPosition(source);
    
      //There is more then 1 height Property in WPF. 
      //The Actuall one is what you are looking for
      //Unfortunately you get doubles for this and int for the other. Consider general advise regarding double math
      double ElementHeight = source.ActualHeight;
      double ElementWidth = source.ActualWidth;
    
      //Do what you need to find the relative position
    
      //Part 2
    }
    

    希望其他人能给你一个更好的答案。

    你试过什么?你哪里有问题?这是某种游戏吗?或者需要类似的重图纸的东西?还有哪个图片框。Aka,你的显示技术是什么:WinForms,WPF/UWP,ASP.Net,其他?在Combobox上它更改图片上的图片在站点上的坐标现在我需要知道如何计算此坐标我不想要此窗口的表单坐标,只有站点上图片中的跳线你可以看到坐标。我重复一遍:你的显示技术是什么:WinForms、WPF/UWP、ASP.Net、其他?它们都有不同的图片框,因此需要不同的解决方案。哦,对不起,是的,我使用WPF