模仿QQ截图片

来源:互联网 发布:es文件浏览器 ftp端口 编辑:程序博客网 时间:2024/04/29 22:57

两个picturebox,一个放图片

完整代码如下

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
using System.Xml;
namespace Test
{
    public partial class Form1 : Form
    {
        private bool MouseIsDown = false;
        private int _x, _y;
        private Rectangle MouseRect = Rectangle.Empty;
        public Form1()
        {
            InitializeComponent();
        }
        private void ResizeToRectangle(Point p)
        {
            DrawRectangle();
            MouseRect.Width = p.X - MouseRect.Left;
            MouseRect.Height = p.Y - MouseRect.Top;
            DrawRectangle();
        }
        private void DrawRectangle()
        {
            Rectangle rect = this.RectangleToScreen(MouseRect);
            ControlPaint.DrawReversibleFrame(rect, Color.White, FrameStyle.Dashed);

        }
        private void DrawStart(Point StartPoint)
        {
            barkPictureBox.Capture = true;
            Cursor.Clip = this.RectangleToScreen(new Rectangle(0, 0, ClientSize.Width, ClientSize.Height));
            MouseRect = new Rectangle(StartPoint.X, StartPoint.Y, 0, 0);
        }


        private void button1_Click(object sender, EventArgs e)
        {

        }


        void barkPictureBox_MouseUp(object sender, MouseEventArgs e)
        {
            barkPictureBox.Capture = false;
            Cursor.Clip = Rectangle.Empty;
            MouseIsDown = false;
            DrawRectangle();

            if (MouseRect.X == 0 || MouseRect.Y == 0 || MouseRect.Width == 0 || MouseRect.Height == 0)  //如果区域有一个是0就返回
            {
            }
            else
            {
                ///代码
            }

            MouseRect = Rectangle.Empty;
            int sx = _x < e.X ? _x : e.X;
            int sy = _y < e.Y ? _y : e.Y;
            int w = Math.Abs(_x - e.X);
            int h = Math.Abs(_y - e.Y);
            Graphics g = Graphics.FromHwnd(pictureBox2.Handle);
            g.Clear(pictureBox2.BackColor);
            g.DrawImage(barkPictureBox.Image, new Rectangle(0, 0, w, h), sx, sy, w, h, GraphicsUnit.Pixel);
        }

        void barkPictureBox_MouseMove(object sender, MouseEventArgs e)
        {
            if (MouseIsDown) ResizeToRectangle(new Point(e.X + barkPictureBox.Location.X, e.Y + barkPictureBox.Location.Y));
          
        }

        void barkPictureBox_MouseDown(object sender, MouseEventArgs e)
        {
            _x = e.X;
            _y = e.Y;

            MouseIsDown = true;
            DrawStart(new Point(e.X + barkPictureBox.Location.X, e.Y + barkPictureBox.Location.Y));
        }


 

   

        private void Form1_Load(object sender, EventArgs e)
        {
            barkPictureBox.MouseDown += new MouseEventHandler(barkPictureBox_MouseDown);
            barkPictureBox.MouseMove += new MouseEventHandler(barkPictureBox_MouseMove);
            barkPictureBox.MouseUp += new MouseEventHandler(barkPictureBox_MouseUp);

        }
    }
}

原创粉丝点击