如何检测鼠标点击绘制的图像?

时间:2013-02-15 09:41:57

标签: c# winforms

我是c#Windows窗体应用程序开发的新手。

我创建了一个带有面板的表单,用户可以在其中绘制图像。如何检查图像是否被点击?

2 个答案:

答案 0 :(得分:3)

在设计器模式下,右键单击面板,转到“属性”。 在“属性”窗口中,选择“事件”(Lightning图标)。 双击Click,然后将生成以下代码:

private void panel1_Click(object sender, EventArgs e)
    {
        //--what to do when user clicks on panel--
        MessageBox.Show("Clicked");
    }

答案 1 :(得分:2)

只需双击表单的图像面板(或您希望检测单击事件的任何对象),Visual Studio将自动生成OnClick()事件。毋庸置疑,我在谈论表单设计器,而不是在测试代码时会看到的实际表单。

或者,您可以通过对象的属性设置要实现的事件。这样,您还可以实施OnKeyDown()OnFocus()或任何其他类型的活动。

编辑:如果图片未覆盖整个面板,则必须检查鼠标位置是否在图像的尺寸范围内。假设图像是在(imgOriginX, imgOriginY)位置绘制的,其大小为(imgWidth, imgHeight)

// Fires, when user clicks on panel
private void panel_Click(object sender, EventArgs e)
{
    // Cast to MouseEventArgs
    MouseEventArgs mouse = (MouseEventArgs)e;

    // If mouse is within image
    if (mouse.X >= imgOriginX && mouse.Y >= imgOriginY && mouse.X < imgOriginX + imgWidth && mouse.Y < imgOriginY + imgHeight)
    {
        // do something here
    }
}