日期:2014-05-17  浏览次数:21055 次

【分享】在一块空间中鼠标中键平移缩放图像
按照国际惯例   效果图:

下载地址
http://download.csdn.net/detail/crystal_lz/4696976

这几天 一朋友问我 在一个逻辑空间中操作图像的问题
干脆 就搞了一个例子 这里只是部分基本功能
鼠标中键点下平移图像
鼠标中键滚动的时候 根据鼠标的位置缩放图像

图像右上角对应的是 鼠标当前位置 
在picturebox上的坐标 和 在空间中的画布的坐标系中的一个虚拟的坐标

图像中间两条粗的线 就是在空间中的一个虚拟的坐标系

然后左上角显示的是 
缩放比
空间坐标系原点坐标位置对应在设备上面的坐标
pictrueBox左上角的位置在 空间坐标系中的坐标
pictrueBox右下角的位置在 空间坐标系中的坐标
当前pictrueBox显示的空间中的内容的大小

本来觉得 这东西没必要发上来的 但是想着反正都做了 估计有人需要 就发上来分享了
------最佳解决方案--------------------
收藏了
------其他解决方案--------------------
挺好的,放大后图像画质怎么样??
------其他解决方案--------------------
不得不说句 下载了几个录制gif的工具 没一个顺手的 也不知道平时大家录制gif用的都是啥软件
当时本想着 干脆以后要用自己写一个 仔细一想自己写一个估计也好不到哪去 顶多加上一些自己的习惯
------其他解决方案--------------------
忘了贴代码了 反正也就一百多行
有啥写的不对的地方还请包涵

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

namespace ImageScale
{
    public partial class Form1 : Form
    {
        public Form1() {
            InitializeComponent();
            this.StartPosition = FormStartPosition.CenterScreen;
            this.pictureBox1.BorderStyle = BorderStyle.FixedSingle;
            this.pictureBox1.BackColor = Color.DarkGray;
            this.pictureBox1.MouseWheel += new MouseEventHandler(pictureBox1_MouseWheel);
        }

        Bitmap m_bmp;               //画布中的图像
        Point m_ptCanvas;           //画布原点在设备上的坐标
        Point m_ptCanvasBuf;        //重置画布坐标计算时用的临时变量
        Point m_ptBmp;              //图像位于画布坐标系中的坐标
        float m_nScale = 1.0F;      //缩放比例

        Point m_ptMouseDown;        //鼠标点下是在设备坐标上的坐标

        string m_strMousePt;        //鼠标当前位置对应的坐标

        private void Form1_Load(object sender, EventArgs e) {
            m_bmp = GetScreen();
            //初始化 坐标
            m_ptCanvas = new Point(pictureBox1.Width / 2, pictureBox1.Height /&