gpt4 book ai didi

python - 在 PyQt 中绘制具有高程和降低效果的 3D 矩形/多边形

转载 作者:行者123 更新时间:2023-12-01 08:04:23 25 4
gpt4 key购买 nike

在 Java 中,您可以使用以下方法绘制 3D 矩形(请参阅 https://way2java.com/awt-graphics/4891/ ):

void fill3DRect(int x, int y, int width, int height, boolean raised)

这里,最后一个参数“raised”用于相对于绘图表面降低/升高 3d 矩形。

如何在PyQt中实现这种效果?

最佳答案

这取决于您想要使用什么级别的油漆:

有 2 个选项:

  • 使用 QPainter:

这种效果可以通过绘制2个移位的矩形来实现,其中背景矩形的颜色比前面的颜色深:

from PyQt5 import QtCore, QtGui, QtWidgets


def draw3DRect(painter, rect, color, raised=False, offset=QtCore.QPoint(4, 4)):
if raised:
painter.fillRect(rect.translated(offset), color.darker())
painter.fillRect(rect, color)


class Widget(QtWidgets.QWidget):
def paintEvent(self, event):
painter = QtGui.QPainter(self)
r = QtCore.QRect(
self.width() / 4,
self.height() / 4,
self.width() / 2,
self.height() / 2,
)
draw3DRect(painter, r, QtGui.QColor("green"), raised=True)

def sizeHint(self):
return QtCore.QSize(320, 240)


if __name__ == "__main__":
import sys

app = QtWidgets.QApplication(sys.argv)
w = Widget()
w.show()
sys.exit(app.exec_())

enter image description here

  • 使用 QGraphicsDropShadowEffect:

在本例中,QWidget 和 QGraphicsItem 支持此效果:

from PyQt5 import QtCore, QtGui, QtWidgets


if __name__ == "__main__":
import sys

app = QtWidgets.QApplication(sys.argv)
w = QtWidgets.QWidget()
lay = QtWidgets.QHBoxLayout(w)
scene = QtWidgets.QGraphicsScene()
view = QtWidgets.QGraphicsView(scene)
rect_item = QtWidgets.QGraphicsRectItem(QtCore.QRectF(0, 0, 200, 100))
rect_item.setBrush(QtGui.QColor("green"))
effect_item = QtWidgets.QGraphicsDropShadowEffect(
offset=QtCore.QPointF(3, 3), blurRadius=5
)
rect_item.setGraphicsEffect(effect_item)
scene.addItem(rect_item)

rect_widget = QtWidgets.QWidget()
rect_widget.setFixedSize(320, 240)
rect_widget.setStyleSheet("background-color:green;")
effect_widget = QtWidgets.QGraphicsDropShadowEffect(
offset=QtCore.QPointF(3, 3), blurRadius=5
)
rect_widget.setGraphicsEffect(effect_widget)

lay.addWidget(view)
lay.addWidget(rect_widget)
w.resize(640, 480)
w.show()
sys.exit(app.exec_())

enter image description here

关于python - 在 PyQt 中绘制具有高程和降低效果的 3D 矩形/多边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55611548/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com