收藏
回答

分享截屏能否从页面最底端开始截屏

问题模块
API和组件

分享截屏能否从页面最底端开始截屏

最后一次编辑于  2017-10-26  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

14 个回答

  • 嗯
    2017-10-26

    1, 你可以在点击分享的时候,把上半部分隐藏(没试过)

    2,自己用canvas画,然后传image

    2017-10-26
    赞同
    回复
  • 已无风雨已无晴
    已无风雨已无晴
    2017-10-26

    谢谢你的回答。

    请问下怎么把上半部分隐藏掉呢? 还请问下,我最近也在做小程序html转化为图片保存在本地,请问您有什么思路知道下吗

    谢谢你

    2017-10-26
    赞同
    回复
  • 嗯
    2017-10-26

    1.

    2017-10-26
    赞同
    回复
  • 嗯
    2017-10-26

    2 .  代码过长,开发还要几天的话,我这几天看看能否抽象成轮子。

    (长图,文字换行,画图,动态切换背景都已经实现)

    2017-10-26
    赞同
    回复
  • 嗯
    2017-10-26


    这里是 wxml  其他的style、needWhitefont、inviteSkin 是我设置切换多种皮肤用的


    主要就是   data-xx传递主要信息

    canvas-draw 方便我处理我想要画的

    2017-10-26
    赞同
    回复
  • 嗯
    2017-10-26

    哈哈哈哈 限制回复图片了,

    一张图片说我 超过20000字了  6666

    那就算了,我去写轮子了

    2017-10-26
    赞同
    回复
  • 已无风雨已无晴
    已无风雨已无晴
    2017-10-26

    请问下设置topShow: true是什么意思呢?

    2017-10-26
    赞同
    回复
  • 嗯
    2017-10-26

    写错了 写错了   ,

    topShow: false

    complete(){

        topShow: true

    }

    不好意思,

    2,canvas保存图片的话,我尽量这周造好,放github上,好了我再回复你一下地址

    2017-10-26
    赞同
    回复
  • 已无风雨已无晴
    已无风雨已无晴
    2017-10-26

    非常感谢你!

    topShow: true这样设置安卓测试时从可视窗口的百分之八十截屏,已经基本解决了这个问题,有没有参数从底部开始截屏呢?

    或者你能否简单讲一下小程序wxml按按钮转化为图片保存的大概思路,我也可以提前研究下,后面看你github会更容易懂一些

    2017-10-26
    赞同
    回复
  • 嗯
    2017-10-26

    wx.createSelectorQuery().selectAll('.canvas-draw')

    // 画图

            function imageDraw(nodeInfo) {


                ctx.drawImage(nodeInfo.dataset.content, nodeInfo.left, nodeInfo.top, nodeInfo.width, nodeInfo.height)

                drawedCount++


                console.log('image', nodeInfo.left, nodeInfo.top, nodeInfo.width, nodeInfo.height)

                if (drawedCount === nodeLength) {

                    setTimeout(() => {

                        console.log('截止')

                        doneAll()

                    },0)   

                }

            }


            // 划线

            function lineDraw(nodeInfo) {


                ctx.rect(nodeInfo.left, nodeInfo.top, nodeInfo.width, 1)

                ctx.setFillStyle(nodeInfo.dataset.color)

                ctx.fill()

                console.log('line', nodeInfo.left, nodeInfo.top, nodeInfo.width, 1)

                drawedCount++


                if (drawedCount === nodeLength) {

                    setTimeout(() => {

                        console.log('截止')

                        doneAll()

                    }, 0)

                }


            }


            // 写字

            function fontDraw(nodeInfo) {


                let fontSize = Math.floor(Number(nodeInfo.dataset.size) * scaleVal)

                let fontColor = nodeInfo.dataset.color || '#475669'


                ctx.setFontSize(fontSize)

                ctx.setFillStyle(fontColor)

                ctx.setTextAlign('center')

                ctx.setTextBaseline('top')


                // 处理换行 依据是高度大于两倍字体

                let lineCount = Math.floor(nodeInfo.height / fontSize)


                if (lineCount === 1) {

                    

                    ctx.fillText(nodeInfo.dataset.content, that.data.contentWidth / 2, nodeInfo.top)

                    // 如果要加粗

                    if (nodeInfo.dataset.weight) {

                        ctx.fillText(nodeInfo.dataset.content, that.data.contentWidth / 2 + .2, nodeInfo.top + .2)

                        ctx.fillText(nodeInfo.dataset.content, that.data.contentWidth / 2 - .2, nodeInfo.top - .2)

                    }

                } else {


                    let contentWord = nodeInfo.dataset.content

                    let lineNum = Math.floor(contentWord.length / lineCount)

                    

                    for (let i = 0; i < lineCount; i++) {

                        

                        let tempWord = i === lineCount - 1 ? contentWord.substr(i * lineNum) : contentWord.substr(i * lineNum, lineNum)

                        let tempTop = nodeInfo.top + ((fontSize + 5) * i)


                        ctx.fillText(tempWord, that.data.contentWidth / 2, tempTop)

                        

                        // 如果要加粗

                        if (nodeInfo.dataset.weight) {

                            ctx.fillText(tempWord, that.data.contentWidth / 2 + .2, tempTop + .2)

                            ctx.fillText(tempWord, that.data.contentWidth / 2 - .2, tempTop - .2)

                        }

                        

                    }

                }

                console.log('font', nodeInfo.top)

                drawedCount++


                if (drawedCount === nodeLength) {

                    setTimeout(() => {

                        console.log('截止')

                        doneAll()

                    }, 0)

                }

            }


    2017-10-26
    赞同
    回复