为了在picture上画矩形框
//在初始化处定义三个全局变量
//注意在鼠标按下和移动时,要刷新界面,鼠标抬起时不需要刷新picturebox界面
bool m_bDraw = false;//画矩形
Rectangle m_draw_rect = new Rectangle();
System.Drawing.Point m_oldPt = new System.Drawing.Point();
private void showimage_pb_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
m_bDraw = false;
//showimage_pb.Invalidate();//此处不能有哦
}
}
private void showimage_pb_Paint(object sender, PaintEventArgs e)
{
//
e.Graphics.DrawRectangle(new Pen(Color.Red, 4), m_draw_rect);
}
private void showimage_pb_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
if(m_bDraw)
{
System.Drawing.Size size = showimage_pb.Size;
double xRation = 1600 / size.Width;
double YRation = 1200 / size.Height;
//int x = Convert.ToInt32((e.X > m_oldPt.X ? m_oldPt.X : e.X) * xRation);
//int y = Convert.ToInt32((e.Y > m_oldPt.Y ? m_oldPt.Y : e.Y) * YRation);
//int width = Math.Abs(e.X - m_oldPt.X);
//int height = Math.Abs((e.Y - m_oldPt.Y) * YRation);
int x = e.X > m_oldPt.X ? m_oldPt.X : e.X;
int y = e.Y > m_oldPt.Y ? m_oldPt.Y : e.Y;
int width = Math.Abs(e.X - m_oldPt.X);
int height = Math.Abs(e.Y - m_oldPt.Y);
m_draw_rect = new Rectangle(x, y, width, height);
showimage_pb.Invalidate();
}
}
}
private void showimage_pb_MouseDown(object sender, MouseEventArgs e)
{
if(e.Button == MouseButtons.Left)
{
m_bDraw = true;
m_oldPt = e.Location;
showimage_pb.Invalidate();
}
}