在winforms中创建可点击的C#图像映射
我正试图开发一个基本的C#winforms应用程序,重点是一个可点击的图像地图。也就是说,图像中的某个部分是可点击的,并将打开一个新表单。例如,图像可以是棋盘,单击某个正方形将执行打开新窗体的操作 我希望这个概念是清楚的。我已经研究了S.O.的类似问题,但找不到可行的解决方案在winforms中创建可点击的C#图像映射,c#,winforms,imagemap,C#,Winforms,Imagemap,我正试图开发一个基本的C#winforms应用程序,重点是一个可点击的图像地图。也就是说,图像中的某个部分是可点击的,并将打开一个新表单。例如,图像可以是棋盘,单击某个正方形将执行打开新窗体的操作 我希望这个概念是清楚的。我已经研究了S.O.的类似问题,但找不到可行的解决方案 干杯我的解决方案是在保存图像的任何控件上利用MouseUp事件。点击后,使用PointToClient()将e.Location(MouseUp提供MouseEventArgs)的位置解析到控件 一旦获得该点,您只需确定它
干杯我的解决方案是在保存图像的任何控件上利用
MouseUp
事件。点击后,使用PointToClient()
将e.Location
(MouseUp提供MouseEventArgs
)的位置解析到控件
一旦获得该点
,您只需确定它是否位于有效的矩形
中,如果是,则启动相应的表单
编辑:
您可以使用表单设计器向表单添加控件,例如面板
,然后向该控件添加事件处理程序,例如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
}
}
每当用户单击面板并释放鼠标按钮时,就会调用该事件处理程序
在该事件处理程序中,可以有如下内容:
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
如果要考虑很多区域,比如保持一个列表或数组的代码<矩形> <代码>,并在它们上面循环,你可能需要一个更优雅的解决方案。
基本上你会处理图像上的点击事件并得到点击点的坐标。然后,你必须评估它的价值,你需要做什么或不做 或者,您可以使用“区域” 已经有一个类似的问答,可能是您正在寻找的: 编辑: codeproject上有一个图像映射控件项目,位于以下url:尽管它是.NET 1.0,但根据您的需要调整它应该不是什么大问题。您能更详细地解释一下吗?我想我理解你的意思,我更愿意使用这种方法。我有mouseMove事件中的picbox和x/y坐标。如果是要捕获的单击,请使用MouseUp或MouseDown。不要使用MouseMove…它会不断触发。没有MouseMove,我如何捕获X/Y坐标(位置范围)?这就是
MouseEventArgs
…e.location
(已翻译为客户端坐标)列出的副本不是副本。这个答案甚至不能帮助别人解决这个问题。谢谢!乐于助人而不是轻蔑