一、鼠标滚动放大缩小图片

package cn.util;import java.io.File;
import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.geometry.Point2D;
import javafx.geometry.Rectangle2D;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.input.MouseDragEvent;
import javafx.scene.input.ScrollEvent;
import javafx.scene.layout.Pane;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;/**** @author MK*/
public class ImageApplication extends Application {Point2D dragDistance = null;public void start(Stage primaryStage) {ImageView imageView = new ImageView();String file = new File("picture1.png").toURI().toString();System.out.println(file);Image image = new Image(file);imageView.setImage(image);final double w = image.getWidth();final double h = image.getHeight();final double max = Math.max(w, h);final int width = (int) (500 * w / max);final int heigth = (int) (500 * h / max);imageView.setFitHeight(heigth);imageView.setFitWidth(width);Pane pane = new Pane();StackPane stackPane = new StackPane(pane);Scene scene = new Scene(stackPane, 700, 800);pane.getChildren().add(imageView);pane.heightProperty().addListener(new ChangeListener<Number>() {@Overridepublic void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {imageView.setY((newValue.doubleValue() - imageView.getFitHeight()) / 2);}});pane.widthProperty().addListener(new ChangeListener<Number>() {@Overridepublic void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {imageView.setX((newValue.doubleValue() - imageView.getFitWidth()) / 2);}});final double scale = 5;stackPane.addEventFilter(ScrollEvent.SCROLL, event -> {double rate = 0;if (event.getDeltaY() > 0) {rate = 0.05;} else {rate = -0.05;}double newWidth = imageView.getFitWidth() + w * rate;double newHeight = imageView.getFitHeight() + h * rate;if (newWidth <= width  || newWidth > scale * width ) {return;}Point2D eventPoint = new Point2D(event.getSceneX(), event.getSceneY());Point2D imagePoint = pane.localToScene(new Point2D(imageView.getX(), imageView.getY()));Rectangle2D imageRect = new Rectangle2D(imagePoint.getX(), imagePoint.getY(), imageView.getFitWidth(), imageView.getFitHeight());Point2D ratePoint;Point2D eventPointDistance;if (newWidth > scale / 4 * width && imageRect.contains(eventPoint)) {ratePoint = eventPoint.subtract(imagePoint);ratePoint = new Point2D(ratePoint.getX() / imageView.getFitWidth(), ratePoint.getY() / imageView.getFitHeight());eventPointDistance = pane.sceneToLocal(eventPoint);} else {ratePoint = new Point2D(0.5, 0.5);eventPointDistance = new Point2D(pane.getWidth() / 2,pane.getHeight() / 2);}imageView.setX(eventPointDistance.getX() - newWidth * ratePoint.getX());imageView.setY(eventPointDistance.getY() - newHeight * ratePoint.getY());imageView.setFitWidth(newWidth);imageView.setFitHeight(newHeight);});primaryStage.setScene(scene);primaryStage.show();}public static void main(String[] args) {launch(args);}}

JavaFX鼠标滚动放大缩小图片相关推荐

  1. 鼠标滚动放大缩小图片

    function resizepic(thispic) { if(thispic.width>570) thispic.width=570; } function function bbimg( ...

  2. Jquery鼠标滚轮放大缩小图片

    使用Jquery鼠标点击图片,划动鼠标滚轮放大缩小图片. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&q ...

  3. 鼠标滚轮放大/缩小图片

    <img id=pic src=" http://community.csdn.net/images/CSDN_logo.GIF" width=105 height=31 b ...

  4. 鼠标滚轮 放大缩小图片

    js实现鼠标滚轮放大缩小图片 <script>     //放大缩小图片     function   sdZoom(o)   {     var zoom=parseInt(o.styl ...

  5. Qt for python QChartView鼠标滚动放大缩小

    文章目录 前言 基于 QChart 缩放的几种方式 使用QChartView来缩放 使用QChart来平移和缩放 使用QValueAxis或者QDateTimeAxis来平移和缩放 Qt曲线图表模块Q ...

  6. html图片轮播放大,jquery+CSS3实现轮播图、js实现轮播图片自适应等比显示、图片旋转、图片拖拽、鼠标滚动放大缩小...

    // 实现图片旋转自适应外边框 //算法:1.当图片宽和高同时大于外边框时以宽为标准100%(相对外边框)进行自适应,原图不变垂直水平居中显示 2.当图片宽大于外边框宽,高小于外边框高时,以宽为标准1 ...

  7. 以鼠标位置为中心的图片滚动放大缩小

    1 //以鼠标位置为中心的图片滚动放大缩小 2 $(document).on("mousewheel","#mask img",function(ev){ 3 ...

  8. jquery---实现滚轮放大缩小图片

    (1)滚轮控制放大缩小图片效果如图: 实现代码如下: <!DOCTYPE html> <html><head><meta charset="utf- ...

  9. Markdown给图片添加超链接,点击图片后,跳转新页面。放大缩小图片。

    公司用Markdown写了个项目说明 有个需求,就是点击图片,跳转到图片的链接(因为markdown不能放大缩小图片) 下面是超链接用法: ![alt属性文本](图片地址 ''图片title'') a ...

最新文章

  1. 业绩-----我觉得最难得不是写代码,而是写业绩表
  2. enum in c language
  3. 前端学习(2409):vs code自定义代码块
  4. IOS之导航控制器与表视图
  5. 计算机应用基础试卷结果分析,计算机应用基础 试题
  6. python的py文件打包成exe_将python项目.py文件打包成.exe文件
  7. canvas绘制字体
  8. 在 里面_适合县城里面加盟的鞋店推荐
  9. linux内核驱动子系统,linux内核中的MFD子系统
  10. Eclipse安装教程
  11. x265帧内预测模式RDO过程
  12. canvas中文显示乱码 html5_HTML5 CANVAS:绘制文字
  13. 记第一次阿里数据研发工程师面试
  14. 根据银行卡号获取logo,并提取图片主题色(小程序版)
  15. ffmpeg(六)视频缩放及像素格式转换
  16. ssh pem登陆及pem是什么
  17. 降低指定进程的CPU占用率(适合游戏多开)
  18. Oracle11安装(安装包+图文讲解)
  19. 《国家宝藏》甘肃省博物馆专场:杜淳、黄轩演绎丝路传奇
  20. ARC101E Ribbons on Tree 树形dp 容斥

热门文章

  1. 机器学习之数据预处理——特征编码(标签编码,独热编码)
  2. [Java基础]TreeSet集合概述和特点
  3. 洛谷 P1958 上学路线-dfs
  4. Observer(观察者)--对象行为型模式
  5. Equations HDU - 1496(哈希或三层for循环)求满足公式有多少种情况
  6. python升级pip在哪儿打开_Linux下升级python和安装pip的详解
  7. CoreJava 笔记总结-第十二章 并发-1
  8. Linear Programming_the simplex method in tableau format
  9. C - Swaps 2(树状数组,思维)
  10. CF773E Blog Post Rating(推导min的通项/线段树)