要繪製HSV取色板,通常經過繪製前景色和背景色的方式實現,先繪製前景,而後繪製背景,前景是HSV顏色空間,從左到右,背景是亮度,從上到下,xs和ys是鼠標的當前的位置。spa
def graphicsView_rgb_palette(self,xs,ys): try: rect = QRectF(0, 0, self.graphicsView_color_palette.width() - 2, self.graphicsView_color_palette.height() - 2) self.graphicsView_color_palette_scene = QGraphicsScene(rect) # 建立場景 self.graphicsView_color_palette.setScene(self.graphicsView_color_palette_scene) #前景,HSV空間 ,從360到0 colorGradient = QLinearGradient(0, 0, self.graphicsView_color_palette.width(),0) colorGradient.setSpread(QGradient.RepeatSpread); colorGradient.setColorAt(0, QColor(255, 0, 0, 255)); colorGradient.setColorAt(0.166, QColor(255, 255, 0, 255)); colorGradient.setColorAt(0.333, QColor(0, 255, 0, 255)); colorGradient.setColorAt(0.5, QColor(0, 255, 255, 255)); colorGradient.setColorAt(0.666, QColor(0, 0, 255, 255)); colorGradient.setColorAt(0.833, QColor(255, 0, 255, 255)); colorGradient.setColorAt(1, QColor(255, 0, 0, 255)); #背景,調節亮度,最上面透明,最下面白色 blackGradient = QLinearGradient(0, 0, 0,self.graphicsView_color_palette.height()) blackGradient.setSpread(QGradient.RepeatSpread); blackGradient.setColorAt(0,QColor(0,0,0,0)); blackGradient.setColorAt(1, QColor(255,255,255,250)); #繪製取色板鼠標指示點 item = QGraphicsEllipseItem(-10, -10, 20, 20) # 建立橢圓--場景座標 item.setPos(xs, ys) # 給圖元設置在場景中的座標(移動圖元)--圖元中心座標 item.setBrush(Qt.black) # 設置畫刷 # self.graphicsView_color_palette_scene.setBackgroundBrush(colorGradient); #設置前景色 self.graphicsView_color_palette_scene.setForegroundBrush(blackGradient); #設置背景色 self.graphicsView_color_palette_scene.addItem(item) self.graphicsView_color_palette_scene.clearSelection() # 【清除選擇】 except Exception as e: self.UART_Display_Text(str(e))