图片放大功能

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    publicpartialclass Form1 : Form
    {
        Thread thDraw;
        delegatevoid myDrawRectangel();
        myDrawRectangel mydraw;
        private Point ptBegin =new Point();
        privatebool blIsDrawRectangle =true;

        public Form1()
        {
            InitializeComponent();
        }

        privatevoid pictureBox1_Paint(object sender, PaintEventArgs e)
        {
            if (blIsDrawRectangle)
            {
                e.Graphics.DrawRectangle(new Pen(Brushes.Black, 1), ptBegin.X, ptBegin.Y, 50, 50);
            }
        }

        privatevoid Form1_Load(object sender, EventArgs e)
        {
            //图片背景初始化this.pictureBox1.Image = System.Drawing.Image.FromFile(@"D:\Image\MianPic.bmp");

            mydraw =new myDrawRectangel(ShowDrawRectangle);
            thDraw =new Thread(Run);
            thDraw.Start();

        }
        privatevoid Run()
        {
            while (true)
            {
                if (pictureBox1.Image !=null)
                {
                    this.BeginInvoke(mydraw);
                }
                Thread.Sleep(50);
            }
        }

        privatevoid Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            if (thDraw !=null)
            {
                thDraw.Abort();
            }

        }

        privatevoid ShowDrawRectangle()
        {
            Rectangle rec =new Rectangle(ptBegin.X * pictureBox1.Image.Size.Width /460, ptBegin.Y * pictureBox1.Image.Size.Height /350,
                                           50* pictureBox1.Image.Size.Width /460, 50* pictureBox1.Image.Size.Height /350);
            Graphics g = pictureBox2.CreateGraphics();
            g.DrawImage(pictureBox1.Image, pictureBox2.ClientRectangle, rec, GraphicsUnit.Pixel);
            g.Flush();
        }

        privatevoid pictureBox1_MouseLeave(object sender, EventArgs e)
        {
            blIsDrawRectangle =false;
            pictureBox1.Refresh();

        }

        privatevoid pictureBox1_MouseEnter(object sender, EventArgs e)
        {
            blIsDrawRectangle =true;

        }

        privatevoid pictureBox1_MouseMove(object sender, MouseEventArgs e)
        {
            if (e.X -25<=0)
            {
                ptBegin.X =0;
            }
            elseif (pictureBox1.Size.Width - e.X <=25)
            {
                ptBegin.X = pictureBox1.Size.Width -50;
            }
            else
            {
                ptBegin.X = e.X -25;
            }

            if (e.Y -25<=0)
            {
                ptBegin.Y =0;
            }
            elseif (pictureBox1.Size.Height - e.Y <=25)
            {
                ptBegin.Y = pictureBox1.Size.Height -50;
            }
            else
            {
                ptBegin.Y = e.Y -25;
            }
            pictureBox1.Refresh();

        }

    }
}
posted @ 2011-12-15 16:19  落冰  阅读(213)  评论(0编辑  收藏  举报