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

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

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

干杯

我的解决方案是在任何控件保存图像时利用MouseUp事件。 点击后,使用PointToClient()e.Location (MouseUp给你MouseEventArgs )的位置解析为控件。

获得该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的列表或数组并循环它们。

基本上你会处理图像上的click事件并获得点击点的坐标。 然后,您必须将其评估为您需要执行某些操作所需的值。

或者,您可以使用“区域”。

已有类似的问答可能是您正在寻找的:

在图像中创建可点击区域?

编辑:

在codeproject上有一个图像映射控件项目,位于以下URL:

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

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