Python 使用线帽和线连接的设置绘制线

Python 使用线帽和线连接的设置绘制线,python,image,html,drawing,Python,Image,Html,Drawing,我需要一个Python库,它可以用一个选项画线,选择线帽(例如圆形)和线连接(例如圆形) 我正在寻找像HTML5画布绘制功能一样有效的东西 我查看了PIL、AggDraw,没有找到线帽和连接选项 多谢各位 编辑 我找到了开罗图书馆,我决定用它。您可以阅读有关Cairo和PyCairo的更多信息使用PyQt,您可以轻松设置这些属性,并且应用程序可以不使用gui(例如,仅创建图像并保存到文件) 只需查看有关设置抗锯齿(使用SetRenderInts)的文档以及有关设置cap和join样式的类的文档

我需要一个Python库,它可以用一个选项画线,选择线帽(例如圆形)和线连接(例如圆形)

我正在寻找像HTML5画布绘制功能一样有效的东西

我查看了PIL、AggDraw,没有找到线帽和连接选项

多谢各位

编辑


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

使用PyQt,您可以轻松设置这些属性,并且应用程序可以不使用gui(例如,仅创建图像并保存到文件)

只需查看有关设置抗锯齿(使用SetRenderInts)的文档以及有关设置cap和join样式的类的文档

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")

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

如果您对SVG还满意,那么您可能想看看——它似乎可以满足您在多边形和多段线方面的需求


希望有帮助。

是的。。。我编辑添加了一个完整的示例(程序创建了一个图像并将其保存到.png文件中),看起来很有趣,但我发现了Cairo库,所以我使用了它。Cairo也是一个非常好的库,当然更小(Qt实现了所有功能,然后还有更多功能)。我在使用Cairo时发现的唯一问题是为windows定位正确的库,如果您想在一个封闭源代码程序中使用它,那么在我看来,这些许可条款很容易混淆。