Graphics Reference
In-Depth Information
path.lineTo(x, y + size)
path.lineTo(x + size * 0.18, y + size * 0.18)
path.lineTo(x + size, y)
path.lineTo(x + size * 0.18, y - size * 0.18)
path.closeSubpath()
painter.fillPath(path, QColor("black"))
Finally, we want to draw the labels at each of the four compass points:
labelX = x - metrics.width("N")/2
labelY = y - self.size + labelSize -
metrics.descent()
painter.drawText(QPoint(labelX, labelY), "N")
labelX = x - metrics.width("S")/2
labelY = y + self.size - labelSize +
metrics.ascent()
painter.drawText(QPoint(labelX, labelY), "S")
labelX = x - self.size + labelSize/2 -
metrics.width("E")/2
labelY = y - metrics.height()/2 + metrics.ascent()
painter.drawText(QPoint(labelX, labelY), "E")
labelX = x + self.size - labelSize/2 -
metrics.width("W")/2
labelY = y - metrics.height()/2 + metrics.ascent()
painter.drawText(QPoint(labelX, labelY), "W")
This completes the implementation of our QgsMapCanvasItem subclass. To use it, we
simply have to create and initialize a new CompassRoseItem . Here is an example of
how we can display a CompassRoseItem within the map canvas:
rose = CompassRoseItem(iface.mapCanvas())
rose.setCenter(QPointF(150, 400))
rose.setSize(80)
Search WWH ::




Custom Search