在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,但根据您的需求调整它应该不是什么大问题。