zoukankan      html  css  js  c++  java
  • 模仿QQ截图片

    两个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);
    
            }
        }
    }
  • 相关阅读:
    asp.net Ajax调用Aspx后台方法
    JS 通过字符串取得对应对象
    nginx js、css、图片 及 一些静态文件中出现 http://upstreamname:port 导致部分网页样式显示不正常
    jexus手动跨域设置
    HTTP Error 400. The request hostname is invalid
    at MySql.Data.MySqlClient.MySqlStream.ReadPacket 或 FUNCTION account.AddMinutes does not exist
    sql xml 入门
    Jexus .Net at System.Net.Sockets.Socket.Connect (System.Net.IPAddress[] addresses, System.Int32 port)
    关于SQL SERVER中的FLOAT转换为VARCHAR
    JS倒计时
  • 原文地址:https://www.cnblogs.com/gc2013/p/3696743.html
Copyright © 2011-2022 走看看