java swing 实现鼠标滑轮聚焦缩放图片
1.直接上代码
import java.awt. * ;
import java.awt.event. * ;
import java.awt.geom. * ;
import javax.swing. * ;
public class FPanel extends javax.swing.JPanel {private Dimension preferredSize = new Dimension( 400 , 400 ); private Rectangle2D[] rects = new Rectangle2D[ 50 ]; public static void main(String[] args) { JFrame jf = new JFrame( " test " ); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setSize( 400 , 400 ); jf.add( new JScrollPane( new FPanel())); jf.setVisible( true ); } public FPanel() { // generate rectangles with pseudo-random coords for ( int i = 0 ; i < rects.length; i ++ ) { rects[i] = new Rectangle2D.Double(Math.random()*.8 , Math.random()*.8 , Math.random()*.2 , Math.random()*.2 ); } // mouse listener to detect scrollwheel events addMouseWheelListener( new MouseWheelListener() {public void mouseWheelMoved(MouseWheelEvent e) {updatePreferredSize(e.getWheelRotation(), e.getPoint()); } }); }private void updatePreferredSize( int wheelRotation, Point stablePoint) { double scaleFactor = findScaleFactor(wheelRotation); scaleBy(scaleFactor); Point offset = findOffset(stablePoint, scaleFactor); offsetBy(offset); getParent().doLayout();} private double findScaleFactor( int wheelRotation) { double d= wheelRotation*1.08 ; return (d > 0 ) ? 1/d : -d; } private void scaleBy( double scaleFactor) { int w = ( int ) (getWidth()*scaleFactor);int h = ( int ) (getHeight()*scaleFactor);preferredSize.setSize(w, h); } private Point findOffset(Point stablePoint, double scaleFactor) {int x = ( int ) (stablePoint.x*scaleFactor)-stablePoint.x; int y = ( int ) (stablePoint.y*scaleFactor)-stablePoint.y;return new Point(x, y); } private void offsetBy(Point offset) { Point location = getLocation();setLocation(location.x - offset.x, location.y - offset.y);} public Dimension getPreferredSize() { return preferredSize;}private Rectangle2D r = new Rectangle2D.Float();public void paint(Graphics g) { super.paint(g); g.setColor(Color.red);int w = getWidth(); int h = getHeight(); for (Rectangle2D rect : rects) {r.setRect(rect.getX()*w,rect.getY()*h,rect.getWidth()*w,rect.getHeight()*h);((Graphics2D) g).draw(r); } }
}
2.运行效果
java swing 实现鼠标滑轮聚焦缩放图片相关推荐
- jQuery实现点击图片放大,鼠标滑轮控制缩放
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...
- js 以鼠标为中心缩放图片
原理 使用的绘制方法 void ctx.drawImage(image, dx, dy, dWidth, dHeight); 参数说明: dx image的左上角在目标canvas上 X 轴坐标. d ...
- java swing 禁用鼠标事件_Java学习笔记:swing中树控件,设置树节点的图标,按钮美化,鼠标事件,禁止鼠标双击...
树控件: JTree:声明树控件 声明树的节点: DefaultMutableTreeNode dd=new DefaultMutableTreeNode("传入树节点名称"); ...
- java swing 图片容器_Java Swing中两种设置背景图(容器图片)
在java swing中需要为容器添加图片,或者背景图片. 提供两种简单的解决方案,一种利用JPanel,另一种利用JLabel 1.JPanel(源代码) package oo; import ja ...
- Unity2D 实现UGUI滚动鼠标滑轮以鼠标位置点为中心缩放图片
先放参考文章: Unity3d UGUI以鼠标位置点为中心缩放图片(含项目源码)https://blog.csdn.net/qq_33789001/article/details/117749837 ...
- 鼠标滚动缩放图片效果
前段时间本人在做项目时,做了一个鼠标滚动缩放图片效果,图片支持多个,多个图片循环缩放,花了点时间整理了下,把它贴出来,与大家分享下,在ie6.0,ie7.0,firefox都测试过,没有问题. < ...
- java 等比缩放图片_java处理图片按比例缩放功能
java中的图片按比例缩放功能 1. 按固定长宽进行缩放 /* * 图片缩放,w,h为缩放的目标宽度和高度 * src为源文件目录,dest为缩放后保存目录 */ public static void ...
- Python OpenCV:利用滚动条移动图片,利用鼠标缩放图片
Python OpenCV:利用滚动条移动图片,利用鼠标缩放图片 一.实现目标 二.实现背景 三.实现方法 四.运行环境 五.运行代码 六.运行结果 七.不足 八.参考 一.实现目标 在OpenC ...
- java实现按比例缩放图片技巧
java实现按比例缩放图片技巧 案例需求: 根据指定的文件名称,用户给定的缩放比例来完成缩放图片 思路分析: 1.文件对象File 2.BufferedImage构造器: 图像数据的访问的缓冲器 3. ...
最新文章
- linux下的jsp
- vs系列自带的localdb数据库当做数据库
- 2021-11-13SystemStringBuliding
- 理解zookeeper选举机制
- html5下拉列表多行显示不出来,为什么我这个代码的效果显示不出来?我要显示的是鼠标经过选项出现下拉菜单栏!求大神提点!!!...
- 6大分布式定时任务对比
- Bower介绍及用法(转)
- shiro 同时实现url和按钮的拦截_Shiro是如何拦截未登录请求的(一)
- 【iOS 开发】基础控件:UISwitch
- Java 实现邮箱验证
- html一像素等于多少px,pt和px换算(一pt等于多少像素)
- Unity ML-Agents 之 平衡球案例的实现整理(内含实现步骤)
- 直流侧电力有源滤波器滤除谐波干扰的原理及方案
- 2022-10-24 dell R740服务器 安装显卡 NVIDIA Tesla P40 24GB
- 读博士学位失败率有多高
- apache kafka技术分享系列(目录索引)
- 菜单导航间竖杠竖线间隔符 | 效果的CSS实现
- 前端LayUI框架快速上手详解(一)
- react classnames
- 遇到一个杀不死的僵尸进程