zoukankan      html  css  js  c++  java
  • C# PictureBox 的图像上使用鼠标画矩形框

    C# 中在图像上画框,通过鼠标来实现主要有四个消息响应函数MouseDown, MouseMove, MouseUp, Paint重绘函数实现。当鼠标键按下时开始画框,鼠标键抬起时画框结束。

    1 Point start; //画框的起始点
    2 Point end,//画框的结束点<br>bool blnDraw;//判断是否绘制<br>Rectangel rect;

    鼠标按下响应

    1 private void PictureBox1_MouseDown(object sender, MouseEventArgs e)
    2 {
    3       start = e.Location;
    4       Invalidate();
    5       blnDraw = true;
    6 }

     鼠标移动响应

     1 private void PictureBox1_MouseMove(object sender, MouseEventArgs e)
     2 {
     3     if (blnDraw)
     4     {
     5         if (e.Button != MouseButtons.Left)//判断是否按下左键
     6             return;
     7         Point tempEndPoint = e.Location; //记录框的位置和大小
     8         rect.Location = new Point(
     9         Math.Min(start.X, tempEndPoint.X),
    10         Math.Min(start.Y, tempEndPoint.Y));
    11         rect.Size = new Size(
    12         Math.Abs(start.X - tempEndPoint.X),
    13         Math.Abs(start.Y - tempEndPoint.Y));
    14         PictureBox1.Invalidate();
    15      }
    16 }       

    鼠标键抬起响应

    private void PictureBox1_MouseUp(object sender, MouseEventArgs e)
     {
        blnDraw = false; //结束绘制
     }

    重绘响应

     1 private void imageBox1_Paint(object sender, PaintEventArgs e)
     2 {
     3      if (blnDraw)
     4      {
     5          if (imageBox1.Image != null)
     6          {
     7              if (rect != null && rect.Width > 0 && rect.Height > 0)
     8               {
     9                   e.Graphics.DrawRectangle(new Pen(Color.Red, 3),rect);//重新绘制颜色为红色
    10                }
    11           }
    12       }
    13  
    14 }

    注意:在绘制中如果导入的图像的SizeMode为StretchImage时,画框后图像会缩放,导致框有可能不在pictureBox中,需要将PictureBox的FunctionMode 修改为Minimum 便可。

  • 相关阅读:
    2020.1.15考试总结
    P4558 [JSOI2018]机器人 结论&DP
    2020.1.11考试总结
    2020.1.9考试总结
    如何和出题人斗智斗勇?奇技淫巧汇总
    各种公式总结
    2020.1.5考试总结
    C基础学习笔记——01-C基础第10天(内存结构)
    C基础学习笔记——01-C基础第09天(指针下)
    C基础学习笔记——01-C基础第08天(指针上)
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/12737113.html
Copyright © 2011-2022 走看看