Настройка изображения захваченного предмета - PullRequest
0 голосов
/ 28 октября 2019

У меня есть область мыши, которую я щелкаю и сохраняю в изображение после нажатия на нее.

MouseArea {
    id: mouseArea
    objectName: "testMouseArea"
    width: 64;
    height: 64
    onPressed: tile.grabToImage(function (result) {
        result.saveToFile("D:/ouput.png")
    });
    Rectangle {
        id: tile
        anchors.fill: parent
        color: "blue"
    }
}

Перед сохранением я хочу изменить непрозрачность захваченного изображения области мыши.

Я добавил

result.image.opacity = 0.5

перед сохранением, но это не помогает. Выходные файлы имеют одинаковую непрозрачность (без эффекта).

1 Ответ

0 голосов
/ 30 октября 2019

Хорошо, лучший способ - установить непрозрачность для сохраненного 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);
        });
    }
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...