class_docstr: Widget optimized for very fast video display.
  Generally using an ImageItem inside GraphicsView is fast enough.
  On some systems this may provide faster video. See the VideoSpeedTest example for benchmarking.
code: def paintEvent(self, ev):
      if self.opts is None:
          return
      if self.image is None:
          argb, alpha = fn.makeARGB(
              self.opts[0], *self.opts[1], **self.opts[2]
          )
          if self._cp and self._cp.get_array_module(argb) == self._cp:
              argb = argb.get()  # transfer GPU data back to the CPU
          self.image = fn.makeQImage(
              argb, alpha, copy=False, transpose=False
          )
          self.opts = ()
      # if self.pixmap is None:
      # self.pixmap = QtGui.QPixmap.fromImage(self.image)
      p = QtGui.QPainter(self)
      if self.scaled:
          rect = self.rect()
          ar = rect.width() / float(rect.height())
          imar = self.image.width() / float(self.image.height())
          if ar > imar:
              rect.setWidth(int(rect.width() * imar / ar))
          else:
              rect.setHeight(int(rect.height() * ar / imar))
  
          p.drawImage(rect, self.image)
      else:
          p.drawImage(QtCore.QPointF(), self.image)
      # p.drawPixmap(self.rect(), self.pixmap)
      p.end()
  
file_path: pyqtgraph/pyqtgraph/widgets/RawImageWidget.py
imports: from ..None import functions
  from ..None import getConfigOption, getCupy
  from ..Qt import QtCore, QtGui, QtWidgets
label_desc: Use image node_id 3 for calling the RawImageWidget obj's underlying member method code with example usage: obj.paintEvent(ev) without return types