示例#1
0
    def subRenderer(self, color):
        lineSymbol = QgsLineSymbolV2()
        arrowSymbol = QgsArrowSymbolLayer().create()
        arrowSymbol.setArrowWidth(0.0)
        arrowSymbol.setArrowStartWidth(0.0)
        arrowSymbol.setColor(color)
        arrowSymbol.setIsCurved(False)
        arrowSymbol.setIsRepeated(False)
        renderSetting = QgsRenderContext()
        renderSetting.setFlag(QgsRenderContext.Antialiasing, False)
        renderSetting.setFlag(QgsRenderContext.DrawSymbolBounds, False)
        renderSetting.setFlag(QgsRenderContext.ForceVectorOutput, False)
        renderSetting.setFlag(QgsRenderContext.UseAdvancedEffects, False)
        renderSetting.setFlag(QgsRenderContext.UseRenderingOptimization, False)

        arrEffectStack = arrowSymbol.paintEffect()
        effList = arrEffectStack.effectList()
        for i in range(0, len(effList)):
            if type(effList[i]) == QgsDrawSourceEffect:
                effList[i].setDrawMode(1)
        arrEffectStack.setEnabled(True)

        lineSymbol.appendSymbolLayer(arrowSymbol)

        return lineSymbol
示例#2
0
 def changeSymbol(self):
     """Change symbology from seleted layer"""
     if isinstance(self.lyr.renderer(),QgsSingleSymbolRenderer) == True:
         symbLyr = QgsArrowSymbolLayer()
         symbLyr.setIsCurved(False)
         symbLyr.setIsRepeated(True)
         self.lyr.renderer().symbol().changeSymbolLayer(0, symbLyr)
         self.lyr.triggerRepaint()
         self.iface.layerTreeView().refreshLayerSymbology(self.lyr.id())
     else:
         QMessageBox.warning(None,"Can't change symbology","The layer must be single symbol")