微信小程序,图片双指放大缩小

这篇具有很好参考价值的文章主要介绍了微信小程序,图片双指放大缩小。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

不说废话,直接上代码,复制到项目改就完事了

wxml代码

<!--index.wxml-->
<view class='wrapper'>
  <view class="container">
    <view class="title">双指缩放图片</view>
    <scroll-view class='images' scroll-y="true" scroll-x="true" bindtouchmove="touchmoveCallback" bindtouchstart="touchstartCallback">
      <image mode="aspectFit" src="https://image.91betterwei.com/maoshan/jingquMap.png" style="width:{{scaleWidth }}px;height:{{scaleHeight}}px" bindload="imgload"></image>
    </scroll-view>
  </view>
</view>

js代码文章来源地址https://www.toymoban.com/news/detail-714102.html

//index.js
Page({
  /**
   * 页面的初始数据
   */
  data: {
    distance: 0, // 手指移动的距离
    scale: 1, // 缩放比例
    baseWidth: '', // 图片实际宽度
    baseHeight: '', // 图片实际高度
    initWidth: '', // 图片默认显示宽度
    initHeight: '', // 图片默认显示高度
    scaleWidth: '', // 图片缩放后的宽度
    scaleHeight: '', // 图片缩放后的高度
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    // 获取屏幕宽度
    this.width = wx.getSystemInfoSync().windowWidth;
  },
  /**
   * 监听图片加载成功时触发
   */
  imgload: function (e) {
    this.multiple = e.detail.width / this.width; // 计算原图和默认显示的倍数
    let height = this.multiple > 1 ? e.detail.height / this.multiple : e.detail.height; // 等比例计算出默认高度
    let width = this.multiple > 1 ? this.width : e.detail.width;
    this.setData({
      baseWidth: e.detail.width, // 获取图片实际宽度
      baseHeight: e.detail.height, // 获取图片实际高度
      initWidth: width,
      initHeight: height,
      scaleWidth: width,
      scaleHeight: height,
    })
  },
  /**
   * 双手指触发开始 计算开始触发两个手指坐标的距离
   */
  touchstartCallback: function (e) {
    // 单手指缩放开始,不做任何处理
    if (e.touches.length == 1) return;
    let distance = this.calcDistance(e.touches[0], e.touches[1]);
    this.setData({
      'distance': distance,
    })
  },
  /**
   * 双手指移动   计算两个手指坐标和距离
   */
  touchmoveCallback: function (e) {
    // 单手指缩放不做任何操作
    if (e.touches.length == 1) return;
    let distance = this.calcDistance(e.touches[0], e.touches[1]);
    // 计算移动的过程中实际移动了多少的距离
    let distanceDiff = distance - this.data.distance;
    let newScale = this.data.scale + 0.005 * distanceDiff;

    if (newScale >= this.multiple && this.multiple > 2) { // 原图比较大情况
      newScale = this.multiple;
    } else if (this.multiple < 2 && newScale >= 2) { // 原图较小情况
      newScale = 2; // 最大2倍
    };
    // 最小缩放到1
    if (newScale <= 1) {
      newScale = 1;
    };

    let scaleWidth = newScale * this.data.initWidth;
    let scaleHeight = newScale * this.data.initHeight;
    this.setData({
      distance: distance,
      scale: newScale,
      scaleWidth: scaleWidth,
      scaleHeight: scaleHeight,
      diff: distanceDiff
    });
  },
  /**
   * 计算两个手指距离
   */
  calcDistance(pos0, pos1) {
    let xMove = pos1.clientX - pos0.clientX;
    let yMove = pos1.clientY - pos0.clientY;
    return (Math.sqrt(xMove * xMove + yMove * yMove));
  }
})

到了这里,关于微信小程序,图片双指放大缩小的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 全网最详细的鼠标点击效果与禁用页面缩小放大

    🌏 博客首页: 水香木鱼 📑 文章摘要: 鼠标点击效果   vue2 💌 春波寄语: 故木秀于林,风必摧之;堆出于岸,流必湍之;行高于人,众必非之。 在public的index.html 内 body 下 添加即可。 在public的index.html 内 body 下 添加即可。 在utils文件夹下创建 coreSocialistValues.js 文件,并

    2024年01月23日
    浏览(37)
  • 微信小程序02-轮播图实现与图片点击跳转

    在小程序01中,已经学习了如何制作底部导航栏,本节让我们一起学习如何制作轮播图,以及点击轮播图完成页面跳转。 注:(1)前期学习,我这里用的本地的图片,后期的话,会对接后端接口,动态获取数据,前期方便学习,就暂时用的本地图片。(2)关于图片跳转地址

    2024年02月16日
    浏览(50)
  • [微信小程序]在图片上的特定区域点击实现功能

    目录 一、功能描述 二、两种不同的解决方法 1.方法一:image组件和view组件相结合 2.方法二:获取点击事件的位置信息   对于前端初学者,在前端设计尤其是地图功能设计过程中,偶尔会碰到下面这个问题:实现在图片上特定区域内的点击进行跳转或其它功能。对于这个问题,

    2024年02月02日
    浏览(35)
  • Unity自定义Button实现点击缩小松开放大的功能

    在可以被射线检测到的UI组件上添加这个UIButton脚本,然后代码获取到UIButton,就可以添加点击事件然后使用了。

    2024年01月18日
    浏览(39)
  • js实现图片的放大缩小(鼠标长按拖拽、鼠标滚轮控制放大缩小)

    该功能的需求点事2个月前的一个需求,当时采用的是Element-UI中的image图片做的一个功能,但是不能满足产品真实的需求,只能定制化自己封装。 该功能在Vue2 的element-UI中还是比较鸡肋的 ⬇️ ⬇️ Element-UI 该功能在Emenent-UI-plus(vue3)版本已经很好的支持了。 完整功能如下

    2024年02月03日
    浏览(60)
  • Taro支持富文本(微信小程序)图片样式问题及可点击事件

    react提供的dangerouslySetInnerHTML即可 这个属性相比于其他方案的优势在于:1. 支持修改富文本样式  2. Taro官方属性,比插件靠谱 使用这个属性存在两个问题需要解决 1、需要解决图片样式错乱问题 2、图片点击可放大 tips: 正常方式无法绑定事件,样式设置不生效   真机测试没有

    2024年02月10日
    浏览(36)
  • 【python使用 Pillow 库】缩小|放大图片

    当我们处理图像时,有时候需要调整图像的大小以适应特定的需求。本文将介绍如何使用 Python 的 PIL 库(Pillow)来调整图像的大小,并保存调整后的图像。 在开始之前,我们需要安装 Pillow 库。可以使用以下命令来安装 Pillow: 下面是调整图像大小的示例代码: 代码解析如下

    2024年02月10日
    浏览(32)
  • Vue 实现图片监听鼠标滑轮滚动实现图片缩小放大功能

    前言 其实想要实现功能很简单,就是在一张图片上监听鼠标滑轮滚动的事件,然后根据上滚还是下滚实现图片的缩放。 效果: 注:该配图使用《漫画|有趣的了解一下赋值、深浅拷贝》文章图片,不存在侵权问题。 实现思路 在js中,onmousewheel是鼠标滑轮滚动事件,可以通过

    2024年02月01日
    浏览(42)
  • Android的UI---ZoomControls放大缩小图片

    这里面,如果将setIsZoomInEnabled()方法设置为false,那么这个放大的按钮就变成了灰色,不能用了,其实这个控件就是两个按钮而已,只是有外观,没有功能,如果你要放大图片或者缩小图片,还是要在监听事件中实现 开始看代码 main.xml文件: ?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\"? Linea

    2024年04月12日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包