ImageShellWindow.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import os
  2. from PySide6.QtCore import Qt, Signal, QPoint, QSize
  3. from PySide6.QtWidgets import QWidget
  4. from PySide6.QtGui import QPixmap, QPainter, QImage
  5. from Kikka.KikkaConst import *
  6. from .KikkaShell import ShellBase
  7. class ImageShellWindow(ShellBase):
  8. def __init__(self, parent=None):
  9. super().__init__(parent)
  10. self._size = QSize(512, 512)
  11. self._cavan_image = None
  12. self._pixmap = None
  13. def loadData(self, data):
  14. self._size = QSize(512, 512)
  15. img = QImage(os.path.join(RESOURCES_PATH, "shell.png"))
  16. self.setImage(img)
  17. self.repaint()
  18. def onKikkaOperation(self, operation, param):
  19. pass
  20. def setImage(self, image):
  21. # if isDebug:
  22. # image = self.debugDraw(image)
  23. self._cavan_image = QImage(self._size, QImage.Format.Format_ARGB32_Premultiplied)
  24. painter = QPainter(self._cavan_image)
  25. painter.setCompositionMode(QPainter.CompositionMode.CompositionMode_Source)
  26. painter.fillRect(self._cavan_image.rect(), Qt.GlobalColor.transparent)
  27. painter.end()
  28. del painter
  29. painter = QPainter(self._cavan_image)
  30. painter.setCompositionMode(QPainter.CompositionMode.CompositionMode_SourceOver)
  31. painter.drawImage(QPoint(), image)
  32. painter.end()
  33. del painter
  34. # self._cavan_image.save("shell_image.png")
  35. pixmap = QPixmap().fromImage(image, Qt.ImageConversionFlag.AutoColor)
  36. self._pixmap = pixmap
  37. self.setFixedSize(self._pixmap.size())
  38. self.setMask(self._pixmap.mask())
  39. self.repaint()
  40. def paintEvent(self, event):
  41. if self._pixmap is None:
  42. return
  43. painter = QPainter(self)
  44. painter.drawPixmap(QPoint(), self._pixmap)