在winforms中创建可点击的C#图像映射

时间:2014-01-22 15:09:07

标签: c# winforms imagemap

我正在尝试开发一个基本的C#winforms应用程序,其中包含可点击的图像映射。也就是说,某个部分可以点击并打开新表格的图像。例如,图像可以是棋盘,点击某个正方形将执行打开新表格的操作。

我希望这个概念很清楚。我在S.O.上看过类似的问题。并且找不到可行的解决方案。

干杯

2 个答案:

答案 0 :(得分:3)

我的解决方案是利用MouseUp事件来控制图像。点击后,使用e.LocationMouseEventArgs(MouseUp为您PointToClient())的位置向下解析为控件。

获得Point之后,您只需确定它是否在有效的Rectangle中,如果是,请启动相应的表单。

修改

您可以使用表单设计器向表单添加控件,例如Panel,然后向该控件添加事件处理程序,例如OnMouseUp。它看起来像这样:

private void panel1_MouseUp(Object sender, MouseEventArgs e)
{
    //your code goes here
}

只要用户点击面板并释放鼠标按钮,就会调用该事件处理程序。

在该事件处理程序中,您可以使用以下内容:

if (e.Button.Equals(MouseButtons.Left))
{
    Rectangle rect = new Rectangle(10, 10, 100, 100);  //this is the zone you wish to react the user clicking on
    if (rect.Contains(e.Location))
    {
        //show your form
    }
}

e.Location将是释放按钮时鼠标的位置,坐标对应于相关控件,在本例中为panel1

如果要考虑许多区域,您可能需要更优雅的解决方案,例如保留Rectangle的列表或数组并循环遍历它们。

答案 1 :(得分:2)

基本上,您将处理图像上的click事件并获取点击点的坐标。然后你必须将它评估为你需要做的事情所需的值。

或者你可以使用“区域”。

已经有类似的q& a可能是您正在寻找的东西:

Create clickable zones in image?

修改

在codeproject上有一个图像映射控制项目,位于以下网址:

http://www.codeproject.com/Articles/2820/C-Windows-Forms-ImageMap-Control

虽然它是.NET 1.0,但根据您的需求调整它应该不是什么大问题。