46311062 2022-11-21 10:26 采纳率: 100%
浏览 5
已结题

#微信小程序##canvas#

微信小程序中每当用户新存入一条数据后我就在画布上绘出相关的记录。
但是canvas总是只能显示到height指定的位置,超出的部分不能显示。
有什么办法可以让canvas内部也可以滑动吗?
运行效果图:

img

  • 写回答

1条回答 默认 最新

  • YF云飞 Unity领域新星创作者 2022-11-21 15:49
    关注

    方法1.将绘制出的canvas 保存为本地路径的一个img 路径.然后将图片放到 scroll-view 里面,进行滑动.亲测,滑动最流畅
    html:

    <scroll-view class="temp_day_box" scroll-x>
      <view class="canvas_height">
         <image class="canvas_img" src='{{canvasSaveimg}}'></image>
      </view>
    </scroll-view>
    <canvas canvas-id="canvasWeather" class="canvasHigh"></canvas> 
    
    
    

    css:

    .canvasHigh {
        width: 2250rpx;
        height: 270rpx;
        transform: translateX(-200%);
    }
    .canvas_img{
        width: 2250rpx;
        height: 270rpx;
    }
    
    

    这里的canvasHigh的css属性可以用很多其他的方式隐藏,但是这里注意的是一定不能用display:none;或者 标签里面加hidden,wx:if属性,这样保存下来的图片路径是不会显示出来的。

    js:

    //前面的写法这里就不再编写,可以查看相关文档和官方api
    ctx.draw();
    wx.canvasToTempFilePath({
        canvasId: 'canvasWeather',//canvasId和标签里面的id对应
        success: (res) => {
            var shareTempFilePath = res.tempFilePath;
            _this.setData({
                //将获取到的图片临时路径set到canvasSaveimg中
                canvasSaveimg:shareTempFilePath
            })
        }
    }) 
    
    

    方法2.在scroll-view标签中绑定一个滚动时触发的事件,这里就不需要保存为图片,但是动画效果有点小小的僵硬。

    html:

    <scroll-view class="temp_day_box" scroll-x bindscroll='scrollCanvas'> 
      <view class="canvas_height" style='transform: translateX(-{{canvasLen}}px);'>
        <canvas canvas-id="canvasWeather" class="canvasHigh"></canvas> 
      </view>
    </scroll-view>
    
    
    

    js:

    scrollCanvas: function(e) {
        console.log(e);
        var canvasLen = e.detail.scrollLeft;
        this.setData({
            canvasLen: canvasLen
        })
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月29日
  • 已采纳回答 11月21日
  • 创建了问题 11月21日

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵