PyQt中边长小于1的QPolygon无法绘制问题咨询
QPolygon绘制小边长多边形失败的原因及解决办法
这不是drawPolygon的限制,问题出在你用错了坐标类型:
QPolygon内部存储的是QPoint类型的整数坐标,当你传入QPoint(0,0.5)这类带小数的参数时,小数部分会被直接截断,最终所有点都会变成QPoint(0,0),四个点完全重合,自然画不出任何图形。- 第二个例子用的是整数坐标
QPoint(0,1),没有精度丢失,所以能正常绘制。
解决办法
你有两种选择:
- 使用
QPolygonF搭配QPointF来存储浮点坐标,这样就能保留小数精度:
points1 = QPolygonF([ QPointF(0,0), QPointF(0,0.5), QPointF(0.5,0.5), QPointF(0.5,0)]) p.drawPolygon(points1) p.end()
- 如果必须使用整数坐标,可以先将坐标值放大(比如乘以10),绘制完成后再缩放绘图区域,还原到实际大小。
内容的提问来源于stack exchange,提问作者niko101a3
相关产品推荐
相关产品推荐

