我正在尝试在 QtQuick Canvas 上推送像素
import QtQuick 2.4
import QtQuick.Window 2.1
import QtQuick.Controls 1.2
ApplicationWindow {
Canvas {
id: canvas
width: 500
height: 500
Component.onCompleted:loadImage('kde.png');
onImageLoaded:requestPaint();
onPaint:{
var ctx = getContext("2d");
if (canvas.isImageLoaded('kde.png')) {
var im = ctx.createImageData('kde.png');
im.data[3] = 128;
ctx.putImageData(im, 0, 0);
}
}
}
}
但什么也没发生, Canvas 保持空白。
问题不在于代码执行或图像加载,因为 if
内的 console.log
有效,并检查 im.data
内容表明它包含数据。问题似乎是 putImageData
什么也没做。难道我做错了什么?有没有办法调试putImageData
?
最佳答案
我不明白为什么,但似乎 Context2D.putImageData()
不是正确的工具,Context2D.drawImage()
应该使用它来代替。
import QtQuick 2.4
import QtQuick.Window 2.1
import QtQuick.Controls 1.2
ApplicationWindow {
Canvas {
id: canvas
width: 500
height: 500
Component.onCompleted:loadImage('kde.png');
onImageLoaded:requestPaint();
onPaint:{
var ctx = getContext("2d");
if (canvas.isImageLoaded('kde.png')) {
var im = ctx.createImageData('kde.png');
im.data[3] = 128;
ctx.drawImage(im, 0, 0);
}
}
}
}
按预期工作。
关于qt - Context2D.putImageData 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28701281/