Я пытаюсь нарисовать фоновую сетку в функции drawBackground () моего подкласса QGraphicsScene:
void Scene::drawBackground(QPainter *painter, const QRectF &rect)
{
const int gridSize = 50;
const int realLeft = static_cast<int>(std::floor(rect.left()));
const int realRight = static_cast<int>(std::ceil(rect.right()));
const int realTop = static_cast<int>(std::floor(rect.top()));
const int realBottom = static_cast<int>(std::ceil(rect.bottom()));
// Draw grid.
const int firstLeftGridLine = realLeft - (realLeft % gridSize);
const int firstTopGridLine = realTop - (realTop % gridSize);
QVarLengthArray<QLine, 100> lines;
for (qreal x = firstLeftGridLine; x <= realRight; x += gridSize)
lines.append(QLine(x, realTop, x, realBottom));
for (qreal y = firstTopGridLine; y <= realBottom; y += gridSize)
lines.append(QLine(realLeft, y, realRight, y));
//painter->setRenderHint(QPainter::Antialiasing);
painter->setPen(QPen(QColor(220, 220, 220), 0.0));
painter->drawLines(lines.data(), lines.size());
// Draw axes.
painter->setPen(QPen(Qt::lightGray, 0.0));
painter->drawLine(0, realTop, 0, realBottom);
painter->drawLine(realLeft, 0, realRight, 0);
}
Однако, если я не включу сглаживание, перемещение элементов вокруг иногда оставляет артефактысетка (области, где она не нарисована).Похоже, это в основном происходит при низких уровнях масштабирования, когда изображение немного уменьшено.Любые идеи, что я мог бы сделать неправильно здесь
1005 * Я бы не хотел включать сглаживание, поскольку линии строго горизонтальны и вертикальны, и я хотел бы, чтобы они были такими же четкими, каквозможно.
Любая помощь очень ценится, С уважением, Элвис