Всем здрасти.
Возникла такая вот потребность:
GraphWidget унаследован от QGraphicsView.
На сцену добавляется произвольный полигон(QGraphicsPolygonItem*) в произвольное место. Его родителем является QGraphicsPixmapItem*.
По двойному клику на полигоне необходимо получить новый Pixmap из участка родительского QGraphicsPixmapItem* выделенного полигоном.
Вот примерчик кода:
C++ (Qt)
void GraphWidget::mouseDoubleClickEvent( QMouseEvent* event)
{
QGraphicsItem *item = scene()->itemAt(event->posF());
if (item->type() == QGraphicsPolygonItem::Type){
QGraphicsPolygonItem *gPol = (QGraphicsPolygonItem*)item;
QRegion reg(gPol->polygon().toPolygon());
QPixmap *sPixmap = new QPixmap(reg.boundingRect().width(), reg.boundingRect().height() );
sPixmap->fill(QColor(0, 0, 0, 0));
QPainter painter(sPixmap);
painter.setRenderHint(QPainter::Antialiasing);
painter.save();
painter.setClipRegion(reg);
if(item->parentItem()->type() == QGraphicsPixmapItem::Type) {
QGraphicsPixmapItem *gPix = (QGraphicsPixmapItem*)item->parentItem();
painter.drawPixmap(reg.boundingRect().x(), reg.boundingRect().y(), gPix->pixmap());
}
painter.restore();
painter.end();
sPixmap->save("test_"+QTime::currentTime().toString()+".png");
}
QGraphicsView::mouseDoubleClickEvent(event);
}
НО У МЕНЯ НИЧЕГО НЕ ВЫШЛО!!!
Я так понимаю что-то с координатами напортачил. Но голова уже не пашет. А кусочек этот сегодня желательно поправить.
Всем принявшим участие заранее большое спасибо.