C# 如何使鼠标在图像矩形/区域上单击form1?
我有一个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) {
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的好主意。