Хорошо, лучший способ - установить непрозрачность для сохраненного Item
, а затем захватить изображение. Если по какой-то причине вы хотите сделать больше с изображением, чтобы все о QImage
обработки. Вы можете создать пользовательский элемент C ++, возможно одиночный, или обычный элемент QML с соответствующим методом:
bool ImageProcess::saveWithOpacity(const QImage &input, const QString &path, double opacity)
{
QImage image(input.size(), QImage::Format_ARGB32_Premultiplied);
image.fill(Qt::transparent);
QPainter p(&image);
p.setOpacity(opacity);
p.drawImage(0, 0, input);
p.end();
return image.save(path);
}
, а затем использовать его в коде QML:
MouseArea {
id: area
...
onClicked: {
area.grabToImage(function (result) {
imgProcess.saveWithOpacity(result.image, "/path/to/file/img.png", 0.5);
});
}
...
}