def paintEvent(self, event): painter = QPainter() painter.begin(self) if not self.showRegionMap: painter.drawPixmap(0, 0, self.scaledOwnershipMap) rect = self.imageRect() if self.isEnabled(): if self.showRegionMap: painter.drawPixmap(0, 0, self.scaledRegionMap) else: if self.currentTerritory: painter.drawPixmap(0, 0, self.coloredMask(self.currentTerritory, QColor(*self.game.clientPlayer.color))) #draw active animations for a in self.animations: painter.save() a.paint(painter) painter.restore() painter.drawPixmap(0, 0, self.scaledTroopCountMap) else: painter.fillRect(rect, QColor(0, 0, 0, 200)) painter.drawText(rect, Qt.AlignCenter, "Waiting for the game to start.") #remaining troops if self.game.yourTurn() and self.game.remainingTroops: troopText = "Remaining troops: %d" % self.game.remainingTroops troopRect = QRect(0, 0, painter.fontMetrics().width(troopText) + 8, painter.fontMetrics().height() + 8) troopRect.moveBottomLeft(rect.bottomLeft()) painter.setPen(Qt.white) painter.setBrush(QColor(0, 0, 0, 200)) painter.drawRect(troopRect) painter.drawText(troopRect, Qt.AlignCenter, troopText) painter.end()
def roundCorners(rectangle, radius): '''Get region for setting round edges mask''' region = QRegion() region += rectangle.adjusted(radius,0,-radius,0) region += rectangle.adjusted(0,radius,-0,-radius) corner = QRect(rectangle.topLeft(), QSize(radius*2,radius*2)) region += QRegion(corner, QRegion.Ellipse) corner.moveTopRight(rectangle.topRight()) region += QRegion(corner, QRegion.Ellipse) corner.moveBottomLeft(rectangle.bottomLeft()) region += QRegion(corner, QRegion.Ellipse) corner.moveBottomRight(rectangle.bottomRight()) region += QRegion(corner, QRegion.Ellipse) return region