1、缩放

  1. private void ImageShow_Load(object sender, EventArgs e)
  2. {
  3. pictureBox1.Load(@"E:\SQ1.jpg");
  4. pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
  5. pictureBox1.Dock = DockStyle.None;
  6. }
  7.  
  8. private void pictureBox1_MouseEnter(object sender, EventArgs e)
  9. {
  10. pictureBox1.Focus();
  11. pictureBox1.Cursor = Cursors.SizeAll;
  12. }
  13. /// <summary>
  14. /// 放大,缩小图片
  15. /// </summary>
  16. /// <param name="sender"></param>
  17. /// <param name="e"></param>
  18. void pictureBox1_MouseWheel(object sender, MouseEventArgs e)
  19. {
  20. int i = e.Delta * SystemInformation.MouseWheelScrollLines / ;
  21.  
  22. pictureBox1.Width = pictureBox1.Width + i;//增加picturebox的宽度
  23. pictureBox1.Height = pictureBox1.Height + i;
  24. pictureBox1.Left = pictureBox1.Left - i / ;//使picturebox的中心位于窗体的中心
  25. pictureBox1.Top = pictureBox1.Top - i / ;//进而缩放时图片也位于窗体的中心
  26. }

2、平移

  1. private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
  2. {
  3. if (e.Button == MouseButtons.Left)
  4. {
  5. mouseDownPoint.X = Cursor.Position.X; //注:全局变量mouseDownPoint前面已定义为Point类型
  6. mouseDownPoint.Y = Cursor.Position.Y;
  7. isSelected = true;
  8. }
  9. }
  10.  
  11. private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
  12. {
  13. if (isSelected && IsMouseInPanel())//确定已经激发MouseDown事件,和鼠标在picturebox的范围内
  14. {
  15. this.pictureBox1.Left = this.pictureBox1.Left + (Cursor.Position.X - mouseDownPoint.X);
  16. this.pictureBox1.Top = this.pictureBox1.Top + (Cursor.Position.Y - mouseDownPoint.Y);
  17. mouseDownPoint.X = Cursor.Position.X;
  18. mouseDownPoint.Y = Cursor.Position.Y;
  19. }
  20. }
  21. private bool IsMouseInPanel()
  22. {
  23. if (this.pan_picture.Left < PointToClient(Cursor.Position).X && PointToClient(Cursor.Position).X < this.pan_picture.Left + this.pan_picture.Width && this.pan_picture.Top < PointToClient(Cursor.Position).Y && PointToClient(Cursor.Position).Y < this.pan_picture.Top + this.pan_picture.Height)
  24. {
  25. return true;
  26. }
  27. else
  28. {
  29. return false;
  30. }
  31. }
  32.  
  33. private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
  34. {
  35. isSelected = false;
  36. }

C#,一种简单的方式实现滚动鼠标缩放图片,平移的更多相关文章

  1. activiti复盘重推的一种简单实现方式:

    activiti复盘重推的一种简单实现方式: 设置流程的每一步让用户选择,比如一共有6步完成,用户选择从第4步开始复盘重推,那么把原来的推演oldId和4传到后台, 首先,后台生成一个新的推演id n ...

  2. WebService的一种简单应用方式入门

    1.什么是WebService? WebService即Web服务,简单来讲,他就是一种跨编程语言和跨操作平台的远程调用技术. 2.Web服务: Web服务是基于HTTP和XML的技术:HTTP是互联 ...

  3. Druid数据库连接池两种简单使用方式

    阿里巴巴推出的国产数据库连接池,据网上测试对比,比目前的DBCP或C3P0数据库连接池性能更好 简单使用介绍 Druid与其他数据库连接池使用方法基本一样(与DBCP非常相似),将数据库的连接信息全部 ...

  4. Android: 自定义Tab样式,一种简单的方式。

    之前看到过论坛里已经有人发过自定义Tab样式的帖子,感觉有些复杂了,这里分享个简单的方法. 1.制作4个9patch的tab样式,可参考android默认的资源 tab_unselected.9.pn ...

  5. java倒计时三种简单实现方式

    写完js倒计时,突然想用java实现倒计时,写了三种实现方式 一:设置时长的倒计时: 二:设置时间戳的倒计时: 三:使用java.util.Timer类实现的时间戳倒计时 代码如下: package ...

  6. Golang切片的三种简单使用方式及区别

    概念 切片(slice)是建立在数组之上的更方便,更灵活,更强大的数据结构.切片并不存储任何元素而只是对现有数组的引用. 三种方式及细节案例 ①定义一个切片,然后让切片去引用一个已经创建好的数组 pa ...

  7. pixi.js 简单交互事件(点击、缩放、平移)

    注意:本文代码使用的Pixi.js版本为PixiJS 5.3.3 pixi中常用的鼠标交互事件: //兼容鼠标和触摸屏的共同触发 type InteractionPointerEvents = &qu ...

  8. 前端jquery实现点击图片弹出大图层(且滚动鼠标滑轮图片缩放)

    <img src="{$vo.photo}" height="50px" onclick="showdiv({$i});"> & ...

  9. Qt实现软件自动更新的一种简单方法

    前言 最近在学习Qt开发上位机,想实现一个检查更新的功能,网上搜索了一大圈,发现实现过程都很复杂,关键是代码看不懂,所以就自己开发一种简单的方式来实现.实现效果如下: 点击"检查更新&quo ...

随机推荐

  1. FETCH - 用游标从查询中抓取行

    SYNOPSIS FETCH [ direction { FROM | IN } ] cursorname where direction can be empty or one of: NEXT P ...

  2. linux slab学习

    https://blog.csdn.net/bullbat/article/details/7194794 https://blog.csdn.net/qq_26626709/article/deta ...

  3. AngularJs学习笔记-服务

    服务 (1)在模块中声明的服务对所有组件可见 (2)在组件中声明的服务对自己本身和其子组件 (3)在组件中声明的服务会覆盖在模块中声明的服务 (4)通过@Injectable()装饰器可以在服务中注入 ...

  4. axios跨域问题记录

    axios({headers: {'X-Requested-With': 'XMLHttpRequest','Content-Type': 'application/json; charset=UTF ...

  5. UOJ#386. 【UNR #3】鸽子固定器(链表)

    题意 题目链接 为了固定S**p*鸽鸽,whx和zzt来到鸽具商店选购鸽子固定器. 鸽具商店有 nn 个不同大小的固定器,现在可以选择至多 mm 个来固定S**p*鸽鸽.每个固定器有大小 sisi 和 ...

  6. 嵌入式linux:通过qemu模拟mini2440开发环境

    1 编译安装QEMU 首先下载qemu for mini2440,直接打包下载 http://repo.or.cz/w/qemu/mini2440.git/snapshot/HEAD.tar.gz  ...

  7. python笔记-dict字典的方法

    #!/usr/bin/env python #-*- coding:utf-8 -*- #打印0001-9999的数字 for i in range(9999): s = "%04d&quo ...

  8. 深入解析AJAX的原理

    AJAX:Asynchronous JavaScript And Xml(异步的JS和XML) 同步:客户端发起请求>服务端的处理和响应>客户端重新载入页面(循环) 异步:客户端实时请求& ...

  9. 《鸟哥的Linux私房菜》学习笔记(6)——管道及IO重定向

    一.标准I/O                                                            标准输入:也可以叫STDIN,用0来标识,通常是键盘 标准输出:也 ...

  10. TCP/IP网络编程之多进程服务端(二)

    信号处理 本章接上一章TCP/IP网络编程之多进程服务端(一),在上一章中,我们介绍了进程的创建和销毁,以及如何销毁僵尸进程.前面我们讲过,waitpid是非阻塞等待子进程销毁的函数,但有一个不好的缺 ...