要将屏幕空间坐标转换为图像空间坐标,您需要使用图像的宽度和高度以及图像在 PictureBox 中的位置。以下是一个简单的示例,说明如何在 WinForms 应用程序中实现此转换:
pictureBox
。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 显示了一个图像,并且图像已经完全加载。如果您的图像尚未加载,您可能需要在图像加载完成后再尝试进行转换。
领取专属 10元无门槛券
手把手带您无忧上云