我正在尝试开发一个基本的C#winforms应用程序,其中包含可点击的图像映射。也就是说,某个部分可以点击并打开新表格的图像。例如,图像可以是棋盘,点击某个正方形将执行打开新表格的操作。
我希望这个概念很清楚。我在S.O.上看过类似的问题。并且找不到可行的解决方案。
干杯
答案 0 :(得分:3)
我的解决方案是利用MouseUp
事件来控制图像。点击后,使用e.Location
将MouseEventArgs
(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,但根据您的需求调整它应该不是什么大问题。