def get_path(self, p1, p2): self.p1 = p1 self.p2 = p2 path = QtGui.QPainterPath(self.p1) points = [] sd = self.p2 - self.p1 if abs(sd.x()) <= self.WIDTH: # draw a line pass elif sd.y() < 2 * self.WIDTH: s1 = self.p1 + QtCore.QPointF(0, self.WIDTH) d1 = self.p2 - QtCore.QPointF(0, self.WIDTH) s1d1 = d1 - s1 s2 = s1 + QtCore.QPointF(s1d1.x() / 2., 0) d2 = s2 + QtCore.QPointF(0, s1d1.y()) points.extend([s1, s2, d2, d1]) else: s1 = self.p1 + QtCore.QPointF(0, sd.y() / 2.) d1 = self.p2 - QtCore.QPointF(0, sd.y() / 2.) points.extend([s1, d1]) points.append(self.p2) for pt in points: path.lineTo(pt) return path
def _make_path(self, pen=None): if pen == None: pen = self.pen() else: self.setPen(pen) penWidth = pen.widthF() path = QtGui.QPainterPath() path.addRoundedRect( self.rect().adjusted(penWidth, penWidth, -penWidth, -penWidth), self.__radius, self.__radius) return path
def shape(self): path = QtGui.QPainterPath() # Enlarge selection zone diff = self.p2 - self.p1 if (abs(diff.x()) > abs(diff.y())): dp = QtCore.QPointF(0, 10) else: dp = QtCore.QPointF(10, 0) p1 = self.p1 - dp p2 = self.p1 + dp p3 = self.p2 + dp p4 = self.p2 - dp poly = QtGui.QPolygonF([p1, p2, p3, p4]) path.addPolygon(poly) return path
def get_path(self, p1, p2): self.p1 = p1 self.p2 = p2 path = QtGui.QPainterPath(self.p1) sd = self.p2 - self.p1 if abs(sd.x()) <= self.WIDTH: # draw a line path.lineTo(self.p2) elif sd.y() < self.WIDTH: py = QtCore.QPointF(0, max(self.WIDTH, -sd.y())) path.cubicTo(self.p1 + py, self.p2 - py, self.p2) else: py = QtCore.QPointF(0, sd.y() / 2.) pm = (self.p1 + self.p2) / 2. path.quadTo(self.p1 + py, pm) path.quadTo(self.p2 - py, self.p2) return path
def get_path(self, p1, p2): self.p1 = p1 self.p2 = p2 path = QtGui.QPainterPath(self.p1) path.lineTo(self.p2) return path