我有一个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处的图像时,它将显示消息框,但如果我单击图像区域。 我需要它只有在我点击图像区域和边框时才会显示消息框。即使我点击图像边框的边缘,它也会显示消息框,如果我单击图像上的某个位置,它就会自动显示。图像区域外的任何地方都不会显示消息框。
答案 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");
}
}