视觉工作室的一张图片中有许多可点击的区域

时间:2014-02-11 22:53:06

标签: c# picturebox

是否可以从这张照片中制作9个按钮而不将它们分开。我尝试插入9个不同的图片框,但它们重叠。我还尝试设置透明背景并更改父母。有什么建议? 8 buttons

1 个答案:

答案 0 :(得分:3)

正如Rodrigo Silva的评论所暗示的那样,单个PictureBox制作的“图像地图”可能是最好的方式。将整个图像放在PictureBox中。注册Click事件处理程序。在处理程序中,您可以使用MousePosition.XMousePosition.Y获取鼠标坐标。

要确定点击了哪个区域,我接近它的方法是计算鼠标点击相对于图片中心的角度。然后测试点击落入的8个扇区中的哪个扇区(也许还要进行“半径”检查以确保点击不在中心区域或外边缘之外)。基本上:

double cx; // set to center X coordinate of picture
double cy; // set to center Y coordinate of picture

double x = MousePosition.X;
double y = MousePosition.Y;

double angle = Math.Atan2(y - cy, x - cx);

// convert from radians to degrees
angle *= 180 / Math.PI;

double distance = Math.Sqrt((x - cx) * (x - cx) + (y - cy) * (y - cy));

if (distance > min_distance && distance <= max_distance)
{
    if (angle >= 0 && angle < 45) { /* ... */ }
    else if (angle < 90) { /* ... */ }
    // etc.
}

当然,您可以使用任何其他方法来确定基于鼠标坐标点击的区域。