def draw_controlpoint(painter, controlpoint, drawtangent=True, colors=None): colors = colors or COLORS.copy() selected = 'controlpoint.centerselected' colorkey = selected if controlpoint.selected else 'controlpoint.center' painter.setBrush(QtGui.QColor(colors[colorkey])) painter.setPen(QtGui.QColor(colors[colorkey])) center_rect = create_rect_from_point(controlpoint.center) painter.drawRect(center_rect) if drawtangent is False or controlpoint.linear is True: return painter.setBrush(QtGui.QColor(0, 0, 0, 0)) if controlpoint.autotangent is True: color = colors['controlpoint.autotangent'] else: color = colors['controlpoint.tangentlocked'] painter.setPen(QtGui.QColor(color)) tin_rect = create_rect_from_point(controlpoint.tangentin) painter.drawRect(tin_rect) line = QtCore.QLine(controlpoint.tangentin.toPoint(), controlpoint.center.toPoint()) painter.drawLine(line) tout_rect = create_rect_from_point(controlpoint.tangentout) painter.drawRect(tout_rect) line = QtCore.QLine(controlpoint.center.toPoint(), controlpoint.tangentout.toPoint()) painter.drawLine(line)
def draw_empty_image(painter, rect, name=''): color = QtGui.QColor(NOIMAGE_COLORS["backgroundcolor"]) brush = QtGui.QBrush(color) color = QtGui.QColor(NOIMAGE_COLORS["bordercolor"]) pen = QtGui.QPen(color) painter.setBrush(brush) painter.setPen(pen) painter.drawRect(rect) color = QtGui.QColor(NOIMAGE_COLORS["crosscolor"]) pen.setColor(color) painter.setPen(pen) painter.drawLine(QtCore.QLine(rect.bottomLeft(), rect.topRight())) painter.drawLine(QtCore.QLine(rect.topLeft(), rect.bottomRight())) color = QtGui.QColor(NOIMAGE_COLORS["textcolor"]) pen.setColor(color) painter.setPen(pen) font = QtGui.QFont() font.setBold(True) font.setItalic(False) size = ceil(sqrt((rect.width()**2) + (rect.width()**2)) / 15) font.setPixelSize(size) painter.setFont(font) flags = QtCore.Qt.AlignVCenter | QtCore.Qt.AlignCenter painter.drawText(QtCore.QRectF(rect), flags, "No Image") font = QtGui.QFont() font.setBold(True) font.setItalic(False) font.setPixelSize(15) painter.setFont(font) flags = QtCore.Qt.AlignCenter | QtCore.Qt.AlignBottom textrect = QtCore.QRectF(rect) painter.drawText(textrect, flags, name)
def paint(self, painter, option, widget): painter.fillRect(widget.rect(), QtGui.QBrush(QtGui.QColor(0,0,0,0), QtCore.Qt.SolidPattern)) lines = [] for y in range(self.size+1): lines.append(QtCore.QLine(0, y*self.scale, self.size*self.scale, y*self.scale)) for x in range(self.size+1): lines.append(QtCore.QLine(x*self.scale, 0, x*self.scale, self.size*self.scale)) painter.drawLines(lines)
def renderPlus(self): generator, painter = self.__initSVGFile("plus.svg") painter.setPen(QtGui.QPen(QtCore.Qt.white, self.__thickness)) painter.drawLine( QtCore.QLine(self.__thickness, self.__height / 2, self.__width - self.__thickness, self.__height / 2)) painter.drawLine( QtCore.QLine(self.__width / 2, self.__thickness, self.__width / 2, self.__height - self.__thickness)) painter.end()
def renderExclamation(self): ratio = self.__width * self.__goldenRatio generator, painter = self.__initSVGFile("exclamation.svg") painter.setPen(QtGui.QPen(QtCore.Qt.yellow, self.__thickness)) painter.translate(self.__width / 2, self.__thickness / 2) painter.drawLine(QtCore.QLine(0, 0, 0, ratio)) painter.drawLine( QtCore.QLine(0, self.__height - self.__thickness / 2, 0, self.__height - self.__thickness)) painter.end()
def renderCross(self): generator, painter = self.__initSVGFile("cross.svg") painter.setPen(QtGui.QPen(QtCore.Qt.red, self.__thickness)) painter.drawLine( QtCore.QLine(self.__thickness, self.__thickness, self.__width - self.__thickness, self.__height - self.__thickness)) painter.drawLine( QtCore.QLine(self.__width - self.__thickness, self.__thickness, self.__thickness, self.__height - self.__thickness)) painter.end()
def paintTickMarks(self, qp): if (self.struct_times_days != None): qp.setPen(self.pen_tick_days) qp.setBrush(self.color_tick_days) qp.setFont(self.font_tick_days) metrics = qp.fontMetrics() for n, time_struct in enumerate(self.struct_times_days): if (n == 0): mstime = self.t0 else: mstime = self.mstimestamps_days[n] if (mstime >= self.t0): x0 = int(round(self.pixel_per_msec * (mstime - self.t0))) + self.lmx y0 = 0 timestr=str(time_struct.tm_mday) + ". " + \ str(time_struct.tm_mon) + ". " + str(time_struct.tm_year) fx = 0 fy = int(round(metrics.height())) qp.drawText(QtCore.QPoint(x0 + fx, y0 + fy), timestr) if (self.struct_times_major != None): qp.setPen(self.pen_tick_major) qp.setBrush(self.color_tick_major) qp.setFont(self.font_tick_major) metrics = qp.fontMetrics() for n, time_struct in enumerate(self.struct_times_major): mstime = self.mstimestamps_major[n] if (mstime >= self.t0): x0 = int(round(self.pixel_per_msec * (mstime - self.t0))) + self.lmx x1 = x0 y0 = self.ytick y1 = y0 + self.matick qp.drawLine(QtCore.QLine(x0, y0, x0, y1)) timestr=str(time_struct.tm_hour) + ":" + \ str(time_struct.tm_min) + ":" + str(time_struct.tm_sec) fx = -int(round(metrics.width(timestr) / 2)) fy = int(round(metrics.height())) qp.drawText(QtCore.QPoint(x0 + fx, y1 + fy), timestr) if (self.struct_times_minor != None): qp.setPen(self.pen_tick_minor) qp.setBrush(self.color_tick_minor) for n, time_struct in enumerate(self.struct_times_minor): mstime = self.mstimestamps_minor[n] if (mstime >= self.t0): x0 = int(round(self.pixel_per_msec * (mstime - self.t0))) + self.lmx x1 = x0 y0 = self.ytick y1 = y0 + self.mitick qp.drawLine(QtCore.QLine(x0, y0, x0, y1))
def renderCheckmark(self): invertedRatio = self.__width * (1 - self.__goldenRatio) ratio = self.__width * self.__goldenRatio generator, painter = self.__initSVGFile("checkmark.svg") painter.translate(invertedRatio, self.__height - 2.5 * self.__thickness) painter.setPen(QtGui.QPen(QtCore.Qt.green, self.__thickness)) marginRatio = ratio * 0.85 invertedRatio *= 0.75 painter.drawLine(QtCore.QLine(0, 0, marginRatio, -marginRatio)) painter.drawLine(QtCore.QLine(0, 0, -invertedRatio, -invertedRatio)) painter.end()
def paintEvent(self, event): painter = QtGui.QPainter(self) painter.begin(self) # Gradient gradient = QtGui.QLinearGradient(0.0, 0.0, 0.0, self.height()) white_color = QtGui.QColor() color = 1.0 * self.value if self.value <= 1.0 else 1.0 white_color.setRgbF(color, color, color) black_color = QtGui.QColor() if self.value >= 1.0: color = min((1.0 * self.value) - 1.0, 1.0) else: color = 0.0 black_color.setRgbF(color, color, color) gradient.setColorAt(0, white_color) gradient.setColorAt(1, black_color) painter.fillRect(0, 0, self.width(), self.height(), gradient) # Selected color point painter.setPen(QtCore.Qt.darkGray) for i in range(self.GRID_NUMBER): d = (self.height() / self.GRID_NUMBER) step_y = (i * d) + (d / 2) size = self.SELECT_SIZE / 2 pos_x = QtCore.QPoint((self.width() / 2) - size - 1, step_y) pos_y = QtCore.QPoint((self.width() / 2) + size, step_y) line = QtCore.QLine(pos_x, pos_y) painter.drawLine(line) painter.end()
def get_value_line(slider, value): rect = slider.rect() horizontal_divisor = float(slider.maximum - slider.minimum) horizontal_unit_size = rect.width() / horizontal_divisor left = (value - slider.minimum) * horizontal_unit_size start = QtCore.QPoint(left, rect.top()) end = QtCore.QPoint(left, rect.bottom()) return QtCore.QLine(start, end)
def paintTimeBar(self, qp): if (self.mstime != None): qp.setPen(self.pen_timebar) qp.setBrush(self.color_timebar) x0 = int(round( (self.mstime - self.t0) * self.pixel_per_msec)) + self.lmx y0 = 0 y1 = self.h + self.lmy + self.umy qp.drawLine(QtCore.QLine(x0, y0, x0, y1))
def paint(self, painter, option, widget): try: line = self.__calc2SpecialRectCentorLineIntersect() line = QtCore.QLine(line[0], line[1]) painter.setPen(self.pen) painter.drawLine(line) pt1 = line.p1() # draw arrow angle, arrowLen, arrowAngle = math.atan2(line.dy(), line.dx()), 16, PI / 6 pt2 = pt1 + QtCore.QPoint( math.cos(angle + arrowAngle) * arrowLen, math.sin(angle + arrowAngle) * arrowLen) pt3 = pt1 + QtCore.QPoint( math.cos(angle - arrowAngle) * arrowLen, math.sin(angle - arrowAngle) * arrowLen) painter.drawLine(pt1, pt2) painter.drawLine(pt1, pt3) except Exception as e: traceback.print_exc()
def _draw_lines(self, painter): points = self._get_points() lines = [] values = self.values() if not any([1 for f in values if f is not None]): return lines if values[0] is None: point = QtCore.QPoint(0, points[0].y()) points.insert(0, point) if values[-1] is None: point = QtCore.QPoint(200, points[-1].y()) points.append(point) for index, point in enumerate(points[:-1]): line = QtCore.QLine(point, points[index + 1]) lines.append(line) pen = QtGui.QPen(QtGui.QColor('orange')) painter.setPen(pen) for line in lines: painter.drawLine(line)
def paintEvent(self, event): #args: [QEvent] if any([self.hotBox.name == "main", self.hotBox.name == "viewport"]): # self.raise_() # self.setWindowFlags(QtCore.Qt.WA_TransparentForMouseEvents) #Initialize painter painter = QtGui.QPainter(self) pen = QtGui.QPen(QtGui.QColor(115, 115, 115), 3, QtCore.Qt.SolidLine, QtCore.Qt.RoundCap, QtCore.Qt.RoundJoin) painter.setPen(pen) painter.setRenderHint(QtGui.QPainter.Antialiasing, True) painter.setBrush(QtGui.QColor(115, 115, 115)) painter.drawEllipse(self.hotBox.point, 5, 5) #perform paint if self.hotBox.mousePosition: mouseX = self.hotBox.mousePosition.x() mouseY = self.hotBox.mousePosition.y() line = QtCore.QLine(mouseX, mouseY, self.hotBox.point.x(), self.hotBox.point.y()) painter.drawLine(line) painter.drawEllipse(mouseX - 5, mouseY - 5, 10, 10)