如何在 QPixmap 周围绘制边框/轮廓

时间:2021-04-06 09:24:50

标签: python pyside pyside2 qpixmap qgraphicspixmapitem

我正在尝试在 QPixmap 周围添加黑色边框。 我愚蠢地认为缩小它会做到这一点,但事实并非如此,正如您在此处看到的:

enter image description here

我尝试了很多东西,QGraphicsPixmapItem()QGraphicsDropShadowEffect(),但我想我错过了一些东西。我需要创建一个投影效果或其他东西,然后以某种方式将其绘制回 QPixmap 下。还是只向外填充几个像素?

这是我一直在使用的一些代码:

icon = "iconpath/icon.png"
base_pixmap = QtGui.QPixmap(icon)
color = QtGui.QColor("green")

# set black outline
mask = base_pixmap.createMaskFromColor(QtCore.Qt.transparent, QtCore.Qt.MaskInColor)
base_pixmap.fill(QtGui.QColor("black"))

# set mask
base_pixmap.setMask(mask)

# Take icon, edit size, add to pixmap
pixmap_image = QtGui.QPixmap(icon)

mask = pixmap_image.createMaskFromColor(QtCore.Qt.transparent, QtCore.Qt.MaskInColor)
pixmap_image.fill(color)

# set mask
pixmap_image.setMask(mask)

painter = QtGui.QPainter(self)
margin = 10  # shrink image to fit inside border
height_percent = (float(base_pixmap.height()) / 100) * float(margin)
width_percent = (float(base_pixmap.width()) / 100) * float(margin)

painter.drawPixmap(QtCore.QRect(width_percent / 2, height_percent / 2,
                                self.width() - width_percent,
                                self.height() - height_percent),
                   pixmap_image)

painter.end()

0 个答案:

没有答案
相关问题