class EllipseItem(pg.GraphicsObject):
def __init__(self, center:Union[float,List[float]], radius:Union[float,List[float]]):
pg.GraphicsObject.__init__(self)
self.center = None
self.radius = None
self.setCenter(center)
self.setRadius(radius)
def setCenter(self,center:Union[float,List[float]]):
self.center = center
self.generatePicture()
def setRadius(self,radius:Union[float,List[float]]):
self.radius = radius
self.generatePicture()
def generatePicture(self):
if self.center is not None and self.radius is not None:
self.picture = QtGui.QPicture()
p = QtGui.QPainter(self.picture)
p.setPen(pg.mkPen('w'))
try:
r1 = self.radius[0]
r2 = self.radius[1]
except (TypeError, IndexError):
r1 = r2 = self.radius
try:
c1 = self.center[0] - r1
c2 = self.center[1] - r2
except (TypeError, IndexError):
c1 = self.center - r1
c2 = self.center - r2
p.drawEllipse(QtCore.QRectF(c1,c2,r1*2,r2*2))
p.end()
self.update()
self.informViewBoundsChanged()
def paint(self, p, *args):
p.drawPicture(0, 0, self.picture)
def boundingRect(self):
return QtCore.QRectF(self.picture.boundingRect())