def draw_filled_polygon(self, outline_pen_with=0): if not self.scale_polygon_colors == None: painter_filled_polygon = QPainter(self) painter_filled_polygon.setRenderHint(QPainter.Antialiasing) # Koordinatenursprung in die Mitte der Flaeche legen painter_filled_polygon.translate(self.width() / 2, self.height() / 2) painter_filled_polygon.setPen(Qt.NoPen) self.pen.setWidth(outline_pen_with) if outline_pen_with > 0: painter_filled_polygon.setPen(self.pen) colored_scale_polygon = self.create_polygon_pie( ((self.widget_diameter / 2) - (self.pen.width() / 2)) * self.gauge_color_outer_radius_factor, (((self.widget_diameter / 2) - (self.pen.width() / 2)) * self.gauge_color_inner_radius_factor), self.scale_angle_start_value, self.scale_angle_size) gauge_rect = QRect(QPoint(0, 0), QSize(self.widget_diameter / 2 - 1, self.widget_diameter - 1)) grad = QConicalGradient(QPointF(0, 0), - self.scale_angle_size - self.scale_angle_start_value + self.angle_offset - 1) # todo definition scale color as array here for eachcolor in self.scale_polygon_colors: grad.setColorAt(eachcolor[0], eachcolor[1]) # grad.setColorAt(.00, Qt.red) # grad.setColorAt(.1, Qt.yellow) # grad.setColorAt(.15, Qt.green) # grad.setColorAt(1, Qt.transparent) painter_filled_polygon.setBrush(grad) # self.brush = QBrush(QColor(255, 0, 255, 255)) # painter_filled_polygon.setBrush(self.brush) painter_filled_polygon.drawPolygon(colored_scale_polygon)
def rebuildDataBrushIfNeeded(self): if not self.m_rebuildBrush or not self.m_gradientData: return self.m_rebuildBrush = False p = self.palette() dataBrush = QConicalGradient(QPointF(0.5, 0.5), self.m_nullPosition) dataBrush.setCoordinateMode(QGradient.StretchToDeviceMode) for i in range(0, len(self.m_gradientData)): dataBrush.setColorAt(1 - self.m_gradientData[i][0], self.m_gradientData[i][1]) p.setBrush(QPalette.Highlight, dataBrush) self.setPalette(p)