首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

怎么在PictureBox中实现选择框功能

2013-12-05 
如何在PictureBox中实现选择框功能如何在PictureBox中实现选择框功能,即在PictureBox中按下鼠标左键不松开

如何在PictureBox中实现选择框功能
如何在PictureBox中实现选择框功能,即在PictureBox中按下鼠标左键不松开,然后拖出一个矩形框,当松开鼠标时这个矩形框消失


using System;
using System.Drawing;
using System.Windows.Forms;
namespace Test
{
    public partial class Form1 : Form
    {
        private Point startPoint;
        private Point endPoint;
        private bool isDrawing = false;
        private Bitmap memoryBuffer;
        public Form1()
        {
            InitializeComponent();
            memoryBuffer = new Bitmap(pictureBox1.Width, pictureBox1.Height);
            pictureBox1.MouseUp += new MouseEventHandler(pictureBox1_MouseUp);
            pictureBox1.MouseDown += new MouseEventHandler(pictureBox1_MouseDown);
            pictureBox1.MouseMove += new MouseEventHandler(pictureBox1_MouseMove);
        }

        void pictureBox1_MouseUp(object sender, MouseEventArgs e)
        {
            isDrawing = false;
        }
        void pictureBox1_MouseDown(object sender, MouseEventArgs e)
        {
            startPoint = new Point(e.X, e.Y);
            isDrawing = true;
        }
        void pictureBox1_MouseMove(object sender, MouseEventArgs e)
        {
            endPoint = new Point(e.X, e.Y);
            drawSelectedRect();
        }
        void drawSelectedRect()
        {
            if (!isDrawing)
            {
                pictureBox1.Image = null;
                return;
            }
            Graphics g = Graphics.FromImage(memoryBuffer);
            g.Clear(Color.Black);
            Rectangle rect = new Rectangle
              (
                  Math.Min(startPoint.X, endPoint.X),
                  Math.Min(startPoint.Y, endPoint.Y),
                  Math.Abs(startPoint.X - endPoint.X),
                  Math.Abs(startPoint.Y - endPoint.Y)
              );
            g.DrawRectangle(Pens.Red, rect);
            g.Dispose();
            pictureBox1.Image = memoryBuffer;


        }
    }
}

热点排行