2
我只是graphicsView規模drawbackground忽略
void
ViewPort::zoomIn()
{
zoom(qreal(1.2));
}
void
ViewPort::zoomOut()
{
zoom(1/qreal(1.2));
}
void
ViewPort::zoom(qreal scaleFactor)
{
qreal factor = transform().scale(scaleFactor, scaleFactor).mapRect(QRectF(0, 0, 1, 1)).width();
if (factor < 1 || factor > 100)
return;
scale(scaleFactor, scaleFactor);
}
繪製網格線中的QGraphicsView其背景
drawbackground(QPainter *painter, const QRectF &rect)
{
QVarLengthArray<QLineF, 100> linesX;
for (qreal x = left; x < sceneRect.right(); x += gridInterval)
{
linesX.append(QLineF(x, sceneRect.top(), x, sceneRect.bottom()));
}
QVarLengthArray<QLineF, 100> linesY;
for (qreal y = top; y < sceneRect.bottom(); y += gridInterval){
linesY.append(QLineF(sceneRect.left(), y, sceneRect.right(), y));
}
painter->drawLines(linesX.data(), linesX.size());
painter->drawLines(linesY.data(), linesY.size());
}
和IM縮放視圖現在風光有大量的項目,我必須比例尺,但我需要忽略我繪製在graphicsView drawBackground上的網格線。 我怎麼可以忽略gridLines的尺度轉換。
我試過了QPainter :: resetTransform()卻徒勞無功..
出於curisoity,爲什麼不希望網格線與視圖的比例縮放(縮放) - 當然網格的整個點是指示比例? – cmannett85
我只是想縮放或放大場景中的物體,如圓形目標,多邊形目標和其他像素圖目標。所以在視圖中,網格線更像是帶有軸標記的圖形圖。 – Wagmare
我必須根據轉換的場景更新標記中的比例值。例如:按照sceneRect,默認比例將爲x:1000,y:1000。如果我縮放場景到1500,1000,那麼我必須更新軸到x:1500,y:1000。 – Wagmare