画线,设置线帽和线接合

2024-05-17 18:52:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要一个Python库,它可以用一个选项来绘制线,可以选择line cap(例如round)和line join(例如round)。在

我要找的东西,像HTML5画布绘图功能。在

我看了PIL,AggDraw,没有找到line cap和join选项。在

谢谢。在

编辑

我找到了开罗图书馆,我决定用它。您可以阅读有关Cairohere和PyCairohere的更多信息


Tags: 功能编辑绘图pil图书馆选项画布line
2条回答

既然你问的是HTML5canvas,我假设你是把这个输出到一个网页上。在这种情况下,您会考虑SVG图形而不是画布吗?(就我个人而言,我更喜欢SVG而不是画布,尤其是在绘制线条时)

如果您对SVG没问题,那么您可能需要看看pySVG-它似乎满足了您在多边形和多段线方面的需要。在

希望有帮助。在

使用PyQt,您可以轻松地设置这些属性,并且应用程序可以没有gui(例如,只创建一个图像并保存到文件中)。在

只需查看关于设置抗锯齿的QPainter文档(使用setrenderInts)和关于设置cap和join样式的QPen类的文档。在

from PyQt4.Qt import *
import math

app = QApplication([])

img = QImage(256, 256, QImage.Format_RGB32)
dc = QPainter(img)
dc.fillRect(0, 0, 256, 256, QColor(192, 192, 192))
dc.setRenderHints(QPainter.Antialiasing)
dc.setPen(QPen(QColor(128, 128, 192),
               12.0,
               Qt.SolidLine,
               Qt.RoundCap,
               Qt.RoundJoin))
pts = []
for i in xrange(7):
    t = i * 2 * 3 * math.pi / 7
    pts.append(QPointF(128 + 100 * math.cos(t),
                       128 + 100 * math.sin(t)))
dc.drawPolyline(QPolygonF(pts))
dc = None
img.save("output.png")

Output of the example program

相关问题 更多 >