Сетка в GraphicsView

0

Я хочу реализовать сетку в моем графическом редакторе так, чтобы она соответствовала графическому редактору автоматически, и когда я увеличиваю масштаб графики, только размер блока сетки должен увеличиваться, но не ширина линии сетки. Я попробовал следующее, но ничего не произошло.

void CadGraphicsScene::grid(QPainter *painter, const QRectF &rect)
{
    QPen pen;
    painter->setPen(pen);

    qreal left = int(rect.left()) - (int(rect.left()) % gridSize);
    qreal top = int(rect.top()) - (int(rect.top()) % gridSize);
    QVector<QPointF> points;
    for (qreal x = left; x < rect.right(); x += gridSize){
        for (qreal y = top; y < rect.bottom(); y += gridSize){
            points.append(QPointF(x,y));
        }
    }
    painter->drawPoints(points.data(), points.size());
}

Пожалуйста, помогите мне сделать сетку.

  • 1
    Не могли бы вы подробнее объяснить, в чем проблема? «ничего не происходит» немного шире. Ваш метод вызван, но ничего не нарисован?
  • 0
    Да, мой слот называется, но при нажатии на пункт меню ничего не окрашивается. Я нажал на пункт меню, этот слот называется. Но при этом ничего не красится.
Показать ещё 5 комментариев
Теги:
qt
qgraphicsview

1 ответ

0

1) Используйте косметическую ручку (с нулевой шириной). 2) Сценарий графической анимации QT не зависит от вида (о вашем вопросе увеличения масштаба изображения), но вы можете извлекать коэффициенты масштабирования из пройденного объекта QPainter (QPainter * painter) - QPainter :: worldTransform → QTransform :: m11 (horz_Scale) & QTransform :: m22 (vert_Scale) - в этом случае вы можете пересчитать привязки сетки (для 100% масштабирования QTransform :: m11 == QTransform :: m22 == 1.) on "летать"

  • 0
    Извините, но я вас не понял. Можете ли вы объяснить мне с помощью примера?
  • 0
    const qreal gridSize = 10. * qMax (painter-> worldTransform (). m11 (), painter-> worldTransform (). m22 ()); // теперь значение gridSize зависит от коэффициента масштабирования вида (10 пикселей при увеличении = = 100%)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню