Nie bezpośrednio z Image
. Metody QDeclarativeImage
ma metody pixmap
, i pixmapChange
, ale z jakiegoś powodu nie zadeklarowano żadnej właściwości. Więc nie możesz użyć tego fom qml. Niestety nie można go również używać z C++ - jest to prywatna wersja calsss.
Co można zrobić, to pomalować element graficzny do swojej pixmapy i zapisać do pliku.
class Capturer : public QObject
{
Q_OBJECT
public:
explicit Capturer(QObject *parent = 0);
Q_INVOKABLE void save(QDeclarativeItem *obj);
};
void Capturer::save(QDeclarativeItem *item)
{
QPixmap pix(item->width(), item->height());
QPainter painter(&pix);
QStyleOptionGraphicsItem option;
item->paint(&painter, &option, NULL);
pix.save("/path/to/output.png");
}
Rejestracja "Capturer" zmienny kontekst:
int main()
{
// ...
Capturer capturer;
QmlApplicationViewer viewer;
viewer.rootContext()->setContextProperty("capturer", &capturer);
// ...
}
i używać go w swojej QML:
Rectangle {
// ...
Image {
id: img
source: "/path/to/your/source"
}
MouseArea {
anchors.fill: parent
onClicked: {
capturer.save(img)
}
}
}
dziękuję, dziękuję :). Teraz szukam, jak scalić 2 obrazy w Qt, czy możesz mi pomóc? – Bayan
jak nakładać/scalać 2 'QQuickItem's i zapisywać do obrazu? –