FormEditorGraphicsView::FormEditorGraphicsView(QWidget *parent) : QGraphicsView(parent) { setTransformationAnchor(QGraphicsView::AnchorUnderMouse); setResizeAnchor(QGraphicsView::AnchorViewCenter); setCacheMode(QGraphicsView::CacheNone); // setCacheMode(QGraphicsView::CacheBackground); setViewportUpdateMode(QGraphicsView::SmartViewportUpdate); setOptimizationFlags(QGraphicsView::DontSavePainterState); // setViewportUpdateMode(QGraphicsView::NoViewportUpdate); setRenderHint(QPainter::Antialiasing, false); setFrameShape(QFrame::NoFrame); setAutoFillBackground(true); setBackgroundRole(QPalette::Window); const int checkerbordSize= 20; QPixmap tilePixmap(checkerbordSize * 2, checkerbordSize * 2); tilePixmap.fill(Qt::white); QPainter tilePainter(&tilePixmap); QColor color(220, 220, 220); tilePainter.fillRect(0, 0, checkerbordSize, checkerbordSize, color); tilePainter.fillRect(checkerbordSize, checkerbordSize, checkerbordSize, checkerbordSize, color); tilePainter.end(); setBackgroundBrush(tilePixmap); viewport()->setMouseTracking(true); }
QImage SvgPatternHelper::generateImage( const QRectF &objectBound, const QList<KoShape*> content ) { KoZoomHandler zoomHandler; QSizeF patternSize = size( objectBound ); QSizeF tileSize = zoomHandler.documentToView( patternSize ); QMatrix viewMatrix; if( ! m_patternContentViewbox.isNull() ) { viewMatrix.translate( -m_patternContentViewbox.x(), -m_patternContentViewbox.y() ); const qreal xScale = patternSize.width() / m_patternContentViewbox.width(); const qreal yScale = patternSize.height() / m_patternContentViewbox.height(); viewMatrix.scale( xScale, yScale ); } // setup the tile image QImage tile( tileSize.toSize(), QImage::Format_ARGB32 ); tile.fill( QColor( Qt::transparent ).rgba() ); // setup the painter to paint the tile content QPainter tilePainter( &tile ); tilePainter.setClipRect( tile.rect() ); tilePainter.setWorldMatrix( viewMatrix ); //tilePainter.setRenderHint(QPainter::Antialiasing); // paint the content into the tile image KoShapePainter shapePainter; shapePainter.setShapes( content ); shapePainter.paintShapes( tilePainter, zoomHandler ); return tile; }
static inline QPixmap tilePixMap(int size) { const int checkerbordSize= size; QPixmap tilePixmap(checkerbordSize * 2, checkerbordSize * 2); tilePixmap.fill(Qt::white); QPainter tilePainter(&tilePixmap); QColor color(220, 220, 220); tilePainter.fillRect(0, 0, checkerbordSize, checkerbordSize, color); tilePainter.fillRect(checkerbordSize, checkerbordSize, checkerbordSize, checkerbordSize, color); return tilePixmap; }
void FormEditorGraphicsView::activateCheckboardBackground() { const int checkerbordSize = 20; QPixmap tilePixmap(checkerbordSize * 2, checkerbordSize * 2); tilePixmap.fill(Qt::white); QPainter tilePainter(&tilePixmap); QColor color(220, 220, 220); tilePainter.fillRect(0, 0, checkerbordSize, checkerbordSize, color); tilePainter.fillRect(checkerbordSize, checkerbordSize, checkerbordSize, checkerbordSize, color); tilePainter.end(); setBackgroundBrush(tilePixmap); }
FormView::FormView(QWidget *parent) :QGraphicsView(parent) { setScene(new QGraphicsScene(this)); setTransformationAnchor(AnchorUnderMouse); setDragMode(ScrollHandDrag); setViewportUpdateMode(FullViewportUpdate); // Prepare background check-board pattern QPixmap tilePixmap(64, 64); tilePixmap.fill(Qt::white); QPainter tilePainter(&tilePixmap); QColor color(220, 220, 220); tilePainter.fillRect(0, 0, 32, 32, color); tilePainter.fillRect(32, 32, 32, 32, color); tilePainter.end(); setBackgroundBrush(tilePixmap); }
RenderArea::RenderArea(QWidget *parent) : QGraphicsView(parent) { figure = 0; setpoint = false; setScene(new QGraphicsScene(this)); setTransformationAnchor(AnchorUnderMouse);// setDragMode(NoDrag);//перемещение setViewportUpdateMode(FullViewportUpdate);// QPixmap tilePixmap(64, 64); tilePixmap.fill(Qt::white); QPainter tilePainter(&tilePixmap); QColor color(220, 220, 220); tilePainter.fillRect(0, 0, 32, 32, color); tilePainter.fillRect(32, 32, 32, 32, color); tilePainter.end(); setBackgroundBrush(tilePixmap); graphicsScene = scene(); }
ImageView::ImageView(QWidget *parent) : QGraphicsView(parent), d(new ImageViewPrivate()) { setScene(new QGraphicsScene(this)); setTransformationAnchor(AnchorUnderMouse); setDragMode(ScrollHandDrag); setViewportUpdateMode(FullViewportUpdate); setFrameShape(QFrame::NoFrame); setRenderHint(QPainter::SmoothPixmapTransform); // Prepare background check-board pattern QPixmap tilePixmap(64, 64); tilePixmap.fill(Qt::white); QPainter tilePainter(&tilePixmap); QColor color(220, 220, 220); tilePainter.fillRect(0, 0, 0x20, 0x20, color); tilePainter.fillRect(0x20, 0x20, 0x20, 0x20, color); tilePainter.end(); setBackgroundBrush(tilePixmap); }
SvgView::SvgView(QWidget *parent) : QGraphicsView(parent) , m_renderer(Native) , m_svgItem(0) , m_backgroundItem(0) , m_outlineItem(0) { setScene(new QGraphicsScene(this)); setTransformationAnchor(AnchorUnderMouse); setDragMode(ScrollHandDrag); // Prepare background check-board pattern QPixmap tilePixmap(64, 64); tilePixmap.fill(Qt::white); QPainter tilePainter(&tilePixmap); QColor color(220, 220, 220); tilePainter.fillRect(0, 0, 32, 32, color); tilePainter.fillRect(32, 32, 32, 32, color); tilePainter.end(); setBackgroundBrush(tilePixmap); }
void WebViewCache::draw(QPainter * painter, QGraphicsEffectSource * source) { const QGraphicsItem *item = source->graphicsItem(); QSizeF itemSize = item->boundingRect().size(); if (!qFuzzyCompare(itemSize.width(), m_itemSize.width()) || !qFuzzyCompare(itemSize.height(), m_itemSize.height())) { qDebug() << "Refresh tile cache, for new size" << itemSize; for (int i = 0; i < m_tilePixmaps.size(); i++) { QPixmapCache::remove(m_tilePixmaps[i]); } m_tilePixmaps.clear(); m_tileRects.clear(); int itemWidth = itemSize.width() + 0.5; int itemHeight = itemSize.height() + 0.5; int tilesX = itemWidth / TileSideLength; int tilesY = itemHeight / TileSideLength; if ((itemWidth % TileSideLength) != 0) { ++tilesX; } if ((itemHeight % TileSideLength) != 0) { ++tilesY; } int tilesCount = tilesX * tilesY; m_tilePixmaps.resize(tilesCount); m_tileRects.resize(tilesCount); for (int i = 0; i < tilesX; i++) { for (int j = 0; j < tilesY; j++) { int x = i * TileSideLength; int y = j * TileSideLength; m_tileRects[i + j * tilesX] = QRectF(x, y, TileSideLength, TileSideLength); } } m_itemSize = itemSize; } const QGraphicsItem *parentItem = item->parentItem(); QPointF itemPos = item->pos(); QRectF parentRect = parentItem->boundingRect(); for (int i = 0; i < m_tileRects.size(); i++) { QRectF tileRect = m_tileRects[i].translated(itemPos); if (!tileRect.intersects(parentRect) && !tileRect.contains(parentRect)) { continue; } QPixmap tilePixmap; if (!QPixmapCache::find(m_tilePixmaps[i], &tilePixmap)) { tilePixmap = QPixmap(TileSideLength, TileSideLength); QWebFrame *webFrame = m_webView->page()->mainFrame(); QPainter tilePainter(&tilePixmap); tilePainter.translate(-m_tileRects[i].left(), -m_tileRects[i].top()); webFrame->render(&tilePainter, m_tileRects[i].toRect()); tilePainter.end(); m_tilePixmaps[i] = QPixmapCache::insert(tilePixmap); } tileRect = tileRect.translated(-itemPos); painter->drawPixmap(tileRect.topLeft(), tilePixmap); } }