C#,一种简单的方式实现滚动鼠标缩放图片,平移
1、缩放
- private void ImageShow_Load(object sender, EventArgs e)
- {
- pictureBox1.Load(@"E:\SQ1.jpg");
- pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
- pictureBox1.Dock = DockStyle.None;
- }
- private void pictureBox1_MouseEnter(object sender, EventArgs e)
- {
- pictureBox1.Focus();
- pictureBox1.Cursor = Cursors.SizeAll;
- }
- /// <summary>
- /// 放大,缩小图片
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- void pictureBox1_MouseWheel(object sender, MouseEventArgs e)
- {
- int i = e.Delta * SystemInformation.MouseWheelScrollLines / ;
- pictureBox1.Width = pictureBox1.Width + i;//增加picturebox的宽度
- pictureBox1.Height = pictureBox1.Height + i;
- pictureBox1.Left = pictureBox1.Left - i / ;//使picturebox的中心位于窗体的中心
- pictureBox1.Top = pictureBox1.Top - i / ;//进而缩放时图片也位于窗体的中心
- }
2、平移
- private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
- {
- if (e.Button == MouseButtons.Left)
- {
- mouseDownPoint.X = Cursor.Position.X; //注:全局变量mouseDownPoint前面已定义为Point类型
- mouseDownPoint.Y = Cursor.Position.Y;
- isSelected = true;
- }
- }
- private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
- {
- if (isSelected && IsMouseInPanel())//确定已经激发MouseDown事件,和鼠标在picturebox的范围内
- {
- this.pictureBox1.Left = this.pictureBox1.Left + (Cursor.Position.X - mouseDownPoint.X);
- this.pictureBox1.Top = this.pictureBox1.Top + (Cursor.Position.Y - mouseDownPoint.Y);
- mouseDownPoint.X = Cursor.Position.X;
- mouseDownPoint.Y = Cursor.Position.Y;
- }
- }
- private bool IsMouseInPanel()
- {
- 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)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
- {
- isSelected = false;
- }
C#,一种简单的方式实现滚动鼠标缩放图片,平移的更多相关文章
- activiti复盘重推的一种简单实现方式:
activiti复盘重推的一种简单实现方式: 设置流程的每一步让用户选择,比如一共有6步完成,用户选择从第4步开始复盘重推,那么把原来的推演oldId和4传到后台, 首先,后台生成一个新的推演id n ...
- WebService的一种简单应用方式入门
1.什么是WebService? WebService即Web服务,简单来讲,他就是一种跨编程语言和跨操作平台的远程调用技术. 2.Web服务: Web服务是基于HTTP和XML的技术:HTTP是互联 ...
- Druid数据库连接池两种简单使用方式
阿里巴巴推出的国产数据库连接池,据网上测试对比,比目前的DBCP或C3P0数据库连接池性能更好 简单使用介绍 Druid与其他数据库连接池使用方法基本一样(与DBCP非常相似),将数据库的连接信息全部 ...
- Android: 自定义Tab样式,一种简单的方式。
之前看到过论坛里已经有人发过自定义Tab样式的帖子,感觉有些复杂了,这里分享个简单的方法. 1.制作4个9patch的tab样式,可参考android默认的资源 tab_unselected.9.pn ...
- java倒计时三种简单实现方式
写完js倒计时,突然想用java实现倒计时,写了三种实现方式 一:设置时长的倒计时: 二:设置时间戳的倒计时: 三:使用java.util.Timer类实现的时间戳倒计时 代码如下: package ...
- Golang切片的三种简单使用方式及区别
概念 切片(slice)是建立在数组之上的更方便,更灵活,更强大的数据结构.切片并不存储任何元素而只是对现有数组的引用. 三种方式及细节案例 ①定义一个切片,然后让切片去引用一个已经创建好的数组 pa ...
- pixi.js 简单交互事件(点击、缩放、平移)
注意:本文代码使用的Pixi.js版本为PixiJS 5.3.3 pixi中常用的鼠标交互事件: //兼容鼠标和触摸屏的共同触发 type InteractionPointerEvents = &qu ...
- 前端jquery实现点击图片弹出大图层(且滚动鼠标滑轮图片缩放)
<img src="{$vo.photo}" height="50px" onclick="showdiv({$i});"> & ...
- Qt实现软件自动更新的一种简单方法
前言 最近在学习Qt开发上位机,想实现一个检查更新的功能,网上搜索了一大圈,发现实现过程都很复杂,关键是代码看不懂,所以就自己开发一种简单的方式来实现.实现效果如下: 点击"检查更新&quo ...
随机推荐
- FETCH - 用游标从查询中抓取行
SYNOPSIS FETCH [ direction { FROM | IN } ] cursorname where direction can be empty or one of: NEXT P ...
- linux slab学习
https://blog.csdn.net/bullbat/article/details/7194794 https://blog.csdn.net/qq_26626709/article/deta ...
- AngularJs学习笔记-服务
服务 (1)在模块中声明的服务对所有组件可见 (2)在组件中声明的服务对自己本身和其子组件 (3)在组件中声明的服务会覆盖在模块中声明的服务 (4)通过@Injectable()装饰器可以在服务中注入 ...
- axios跨域问题记录
axios({headers: {'X-Requested-With': 'XMLHttpRequest','Content-Type': 'application/json; charset=UTF ...
- UOJ#386. 【UNR #3】鸽子固定器(链表)
题意 题目链接 为了固定S**p*鸽鸽,whx和zzt来到鸽具商店选购鸽子固定器. 鸽具商店有 nn 个不同大小的固定器,现在可以选择至多 mm 个来固定S**p*鸽鸽.每个固定器有大小 sisi 和 ...
- 嵌入式linux:通过qemu模拟mini2440开发环境
1 编译安装QEMU 首先下载qemu for mini2440,直接打包下载 http://repo.or.cz/w/qemu/mini2440.git/snapshot/HEAD.tar.gz ...
- python笔记-dict字典的方法
#!/usr/bin/env python #-*- coding:utf-8 -*- #打印0001-9999的数字 for i in range(9999): s = "%04d&quo ...
- 深入解析AJAX的原理
AJAX:Asynchronous JavaScript And Xml(异步的JS和XML) 同步:客户端发起请求>服务端的处理和响应>客户端重新载入页面(循环) 异步:客户端实时请求& ...
- 《鸟哥的Linux私房菜》学习笔记(6)——管道及IO重定向
一.标准I/O 标准输入:也可以叫STDIN,用0来标识,通常是键盘 标准输出:也 ...
- TCP/IP网络编程之多进程服务端(二)
信号处理 本章接上一章TCP/IP网络编程之多进程服务端(一),在上一章中,我们介绍了进程的创建和销毁,以及如何销毁僵尸进程.前面我们讲过,waitpid是非阻塞等待子进程销毁的函数,但有一个不好的缺 ...