Doğrudan Image
'dan değil. QDeclarativeImage
, pixmap
, setPixmap
ve pixmapChange
yöntemlerine sahiptir, ancak bazı nedenlerden dolayı bildirilen bir özellik yoktur. Yani bunu kullanamazsınız qml. Ne yazık ki, C++ dan da kullanılamaz - özel bir calsss.
Yapabilecekleriniz pixmap'inize grafik öğeleri boyamak ve dosyaya kaydetmek.
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");
}
Kayıt "capturer" bağlam değişkeni:
int main()
{
// ...
Capturer capturer;
QmlApplicationViewer viewer;
viewer.rootContext()->setContextProperty("capturer", &capturer);
// ...
}
Ve QML kullanmak: Eğer birlikte QML düz yapabiliriz 5.4+ Qt ile
Rectangle {
// ...
Image {
id: img
source: "/path/to/your/source"
}
MouseArea {
anchors.fill: parent
onClicked: {
capturer.save(img)
}
}
}
Teşekkürler sevgili, Çalışıyor :). Şimdi Qt'de 2 görüntüyü nasıl birleştireceğimi araştırıyorum, bana yardımcı olabilir misiniz? – Bayan
2 'QQuickItem'ı birleştirme/birleştirme ve görüntüye nasıl kaydeder? –