Graphics Reference
In-Depth Information
Implementing symbol layers in Python
If the built-in symbol layers aren't flexible enough for your needs, you can implement your
own symbol layers using Python. To do this, you create a subclass of the appropriate type
of symbol layer ( QgsMarkerSymbolLayerV2 , QgsLineSymbolV2 , or Qg-
sFillSymbolV2 ) and implement the various drawing methods yourself. For example,
here is a simple marker symbol layer that draws a cross for a Point geometry:
class CrossSymbolLayer(QgsMarkerSymbolLayerV2):
def __init__(self, length=10.0, width=2.0):
QgsMarkerSymbolLayerV2.__init__(self)
self.length = length
self.width = width
def layerType(self):
return "Cross"
def properties(self):
return {'length' : self.length,
'width' : self.width}
def clone(self):
return CrossSymbolLayer(self.length, self.width)
def startRender(self, context):
self.pen = QPen()
self.pen.setColor(self.color())
self.pen.setWidth(self.width)
def stopRender(self, context):
self.pen = None
def renderPoint(self, point, context):
left = point.x() - self.length
right = point.x() + self.length
bottom = point.y() - self.length
top = point.y() + self.length
Search WWH ::




Custom Search