首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我应该如何从WinForms PictureBox中的屏幕空间坐标转换为图像空间坐标?

要将屏幕空间坐标转换为图像空间坐标,您需要使用图像的宽度和高度以及图像在 PictureBox 中的位置。以下是一个简单的示例,说明如何在 WinForms 应用程序中实现此转换:

  1. 首先,确保您已经添加了一个 PictureBox 控件并将其命名为 pictureBox
  2. 然后,在您的代码中添加以下事件处理程序,以便在用户单击 PictureBox 时执行转换:
代码语言:csharp
复制
private void pictureBox_Click(object sender, EventArgs e)
{
    // 获取鼠标点击的屏幕坐标
    Point mouseScreenPosition = Cursor.Position;

    // 获取 PictureBox 的位置和大小
    Point pictureBoxPosition = pictureBox.Location;
    Size pictureBoxSize = pictureBox.Size;

    // 计算图像在 PictureBox 中的位置
    Point imagePositionInPictureBox = new Point(
        mouseScreenPosition.X - pictureBoxPosition.X - pictureBoxSize.Width / 2,
        mouseScreenPosition.Y - pictureBoxPosition.Y - pictureBoxSize.Height / 2);

    // 获取图像的宽度和高度
    int imageWidth = pictureBox.Image.Width;
    int imageHeight = pictureBox.Image.Height;

    // 计算图像空间坐标
    PointF imageSpacePosition = new PointF(
        (float)imagePositionInPictureBox.X / (pictureBoxSize.Width / 2) * imageWidth,
        (float)imagePositionInPictureBox.Y / (pictureBoxSize.Height / 2) * imageHeight);

    // 显示结果
    MessageBox.Show($"图像空间坐标:({imageSpacePosition.X}, {imageSpacePosition.Y})");
}

这个示例将计算并显示图像空间坐标。请注意,这个示例假设您的 PictureBox 显示了一个图像,并且图像已经完全加载。如果您的图像尚未加载,您可能需要在图像加载完成后再尝试进行转换。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券