如何在图像矩形/区域上单击form1?

时间:2014-06-30 01:07:29

标签: 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)
    {
        // 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");
        }
    }

但是在这种情况下,当我点击0,0处的图像时,它将显示消息框,但如果我单击图像区域。 我需要它只有在我点击图像区域和边框时才会显示消息框。即使我点击图像边框的边缘,它也会显示消息框,如果我单击图像上的某个位置,它就会自动显示。图像区域外的任何地方都不会显示消息框。

1 个答案:

答案 0 :(得分:0)

你可以尝试一下:

    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");
        }
    }