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 ...
随机推荐
- Android(java)学习笔记154:采用HttpClient提交数据(qq登录案例)
1.Apache -Httpclient HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的.最新的.功能丰富的支持 HTTP 协议的客户端编程工具包 ...
- tableviewcell折叠问题,(类似qq列表展开形式) 多个cell同时展开,OC版 和 Swift
之前没有用到过这块,但是今天看到,就试了试,但是发现,网上的有的方法不能多个cell同时展开,只能一个一个的展开. 我就尝试用用数组记录展开的标记的方法,功能实现了, 直接上代码: // // Vie ...
- 第八章 熟练dom的几个常用方法
显示“缩略词语” <abbr> 标签指示简称或缩写,比如 <abbr title="World Wide Web Consortium">W3C</a ...
- C# 运用StreamReader类和StreamWriter类实现文件的读写操作
对文件的读写操作应该是最重要的文件操作,System.IO命名空间为我们提供了诸多文件读写操作类,在这里我要向大家介绍最常用也是最基本的StreamReader类和StreamWriter类.从这两个 ...
- mbstring未安装
yum install php55w-mbstring.x86_64 把php版本换成自己的就ok
- 织梦dedecms出现系统基本参数空白或显示Call to undefined function make_hash()
织梦dedecms出现系统基本参数空白或显示Call to undefined function make_hash() 最新的织梦版本(2018-01-09)修改了include文件夹中的commo ...
- SQL查询出每门课都大于80 分的学生姓名
Course表如下: 查询出每门课都大于80 分的学生姓名有两种方法. 1.select distinct name from Course where name not in (select di ...
- 黑马基础阶段测试题:创建Phone(手机)类,Phone类中包含以下内容:
package com.swift; public class Phone { private String pinpai; private int dianliang; public String ...
- Linux下的GPT分区,使用parted命令
Linux下的GPT分区,这是另外一种分区,针对MBR分区,它有很多优点: (1)几乎突破了分区个数的限制. 在GPT分区表中最多可以支持128个主分区. (2)单个分区容量几乎没有限制. 单个分区最 ...
- mysql 查询出 n小时 以前的数据
select * FROM biaoming WHERE TIMESTAMPDIFF(SECOND ,CREATE_TIME,now() ) > 3*60*60