Вид фон в основном только для «заполнения»; кросс-шаблон очень простой и не настраиваемый (кроме цвета, потому что это базовое свойство заполнения). Но это не так трудно сделать свою собственную сетку, а затем у вас есть гораздо больше контроля (например, толщина, пунктир/штриховой, показывая происхождение и т.д.):
- создать перо для линий сетки: придать ему цвет и ширину
- Вы можете настроить перо на постоянную «косметическую» ширину; в этом случае она не будет масштабироваться
- добавить строки сцены
- набор линий, чтобы иметь наименьшее значение г, чтобы они нарисованы прежде, чем все остальное
Пример:
from PyQt5.QtCore import QTimer, Qt
from PyQt5.QtGui import QPen
from PyQt5.QtWidgets import QApplication, QGraphicsScene, QGraphicsView
scale_fac = 1
def scale():
global scale_fac
scale_fac = scale_fac * 1.5
view.scale(scale_fac, scale_fac)
app = QApplication([])
scene = QGraphicsScene()
pen = QPen(Qt.red)
pen.setCosmetic(True) # ***
for x in range(0, 500, 50):
line = scene.addLine(x, 0, x, 500, pen)
line.setZValue(-10)
for y in range(0, 500, 50):
scene.addLine(0, y, 500, y, pen)
line.setZValue(-10)
view = QGraphicsView()
view.setScene(scene)
view.show()
QTimer.singleShot(1000, scale)
QTimer.singleShot(2000, scale)
QTimer.singleShot(3000, scale)
app.exec()
Если setCosmetic(True)
не выдается, толщина линии будет увеличиваться по мере увеличения.
Приятно отметить, что линии имеют фиксированную координату в сцене. Однако, если вы уменьшаете масштаб изображения, вам может потребоваться добавить больше строк или сделать существующие строки более длинными. Вы можете сделать это, переопределив drawBackground()
сцены, который вызывается с прямой сцены, которая находится в поле зрения: там вы настраиваете конечные точки линии.