Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使鼠标在图像矩形/区域上单击form1?_C#_.net_Winforms - Fatal编程技术网

C# 如何使鼠标在图像矩形/区域上单击form1?

C# 如何使鼠标在图像矩形/区域上单击form1?,c#,.net,winforms,C#,.net,Winforms,我有一个form1的绘画活动 private void Form1_Paint(object sender, PaintEventArgs e) { if (bmp != null) e.Graphics.DrawImage(bmp, 0, 0,50,50); } 和form1单击事件 private void Form1_Click(object sender, EventArgs e) {

我有一个form1的绘画活动

private void Form1_Paint(object sender, PaintEventArgs e)
        {
            if (bmp != null)
                e.Graphics.DrawImage(bmp, 0, 0,50,50);
        }
和form1单击事件

private void Form1_Click(object sender, EventArgs e)
    {
        // Cast to MouseEventArgs
        MouseEventArgs mouse = (MouseEventArgs)e;

        // If mouse is within image
        if (mouse.X >= 0 && mouse.Y >= 0 && mouse.X < 0 + bmp.Width && mouse.Y < 0 + bmp.Height)
        {
            MessageBox.Show("hi");
        }
    }
private void Form1\u单击(对象发送方,事件参数e)
{
//投给老鼠
MouseEventArgs mouse=(MouseEventArgs)e;
//如果鼠标在图像中
如果(mouse.X>=0&&mouse.Y>=0&&mouse.X<0+bmp.Width&&mouse.Y<0+bmp.Height)
{
MessageBox.Show(“hi”);
}
}
但在这种情况下,当我点击0,0处的图像时,它会显示messagebox,但如果我点击图像区域外的图像,也会显示messagebox。 我需要它将显示messagebox只有当我点击图像区域和边框。即使我点击图像边框的边缘,它也会显示messagebox,如果我点击图像的某个地方,它也会显示出来。图像区域外的任何位置都不会显示消息框。

您可以尝试以下方法:

    public partial class Form1 : Form
    {
        Rectangle rec;
        Bitmap bmp;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            bmp = new Bitmap(@"YourImageUrlHere");
            rec = new Rectangle(0, 0, 100, 100);
        }

        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            if (bmp != null)
                e.Graphics.DrawImage(bmp, rec);
        }

        //private void Form1_Click(object sender, EventArgs e)
        //{
        //    dont use this....
        //}

        private void Form1_MouseClick(object sender, MouseEventArgs e)
        {
            if(rec.Contains(e.Location))
                MessageBox.Show("Test");
        }
    }

只是一个想法,为什么你不能实现图像框点击事件?我可以使用pictureBox的好主意。