找回密码
 立即注册

《Qt5编程入门》Canvas一章一处问题,附赠代码无法运行

累计签到:22 天
连续签到:1 天
发表于 2017-6-2 13:15:03 | 显示全部楼层 |阅读模式
1Qter豆
  1. import QtQuick 2.2

  2. Rectangle {
  3.     width: 300; height: 180

  4.     Canvas {
  5.         id: canvas
  6.         anchors.fill: parent
  7.         onImageLoaded: { //当图像加载完成时进行绘制
  8.             if(canvas.isImageError("http://www.baidu.com/img/bdlogo.gif"))
  9.             {
  10.                 console.log("图像加载失败!")
  11.             }
  12.             var ctx = getContext('2d')
  13.             ctx.drawImage("http://www.baidu.com/img/bdlogo.gif", 0, 0)//先将图片绘制在画布上
  14.             var img = ctx.getImageData(60, 50, 120, 40)//截取画布的一部分保存为一个图像
  15.             ctx.strokeRect(60, 50, 120, 40)//将截取的部分用黑线框出来
  16.             console.log(img.width, img.height, img === 0)//【注:这句是我自己后来添加的,以排除问题】
  17.             ctx.putImageData(img, 10, 100)//在新的位置绘制截取的图像
  18.             canvas.requestPaint()//请求对整个可见区域进行重绘
  19.         }
  20.     }

  21.     Component.onCompleted: { //当组件初始化完成时加载图片
  22.         canvas.loadImage("http://www.baidu.com/img/bdlogo.gif")
  23.     }
  24. }
复制代码
运行结果:

发现无法将截取部分绘制出来后,我在代码中添加了一句
console.log(img.width, img.height, img === 0)//【注:这句是我自己后来添加的,以排除问题】
以便确认img是否成功获取,调试结果表明,确实成功获取了(见下图),但就是显示不出来截取的部分。请问这是怎么回事呢?

附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

wsfxzxb

    主题

    帖子

    44

    积分

    Qter1级会员

    Rank: 1

    积分
    44

Qter1级会员

发私信

Qt开源社区——开源 共享 自由

微信扫一扫
查看精品教程!