赞
踩
我曾经在pygame中画线(给定一些起点和终点),如下所示:pygame.draw.line(window, color_L1, X0, X1, 2),其中2定义了线的粗细。
因为.draw不支持抗锯齿,所以我移到了.gfxdraw和pygame.gfxdraw.line(window, X0[0], X0[1], X1[0], X1[1], color_L1)。
但是,这不允许我定义线条的粗细。 我怎么能同时拥有厚度和抗锯齿?
根据线的端点和宽度定义适当的偏移线,并使用它们来定义表示粗线的多边形。 然后使用pygame.gfxdraw.aapolygon()绘制它。
我的线在每一步都在旋转,因此我不确定将其末端定义为多边形,在这种情况下+ -1无效。
以我建议的方式绘制粗线是补偿退化的多边形的情况。 通常涉及大量数学。 请参见使多边形膨胀/收缩(偏移,缓冲)的算法。
经过多次试验和错误,最佳的实现方法如下:
1)首先,根据直线的X0_ {x,y}起点和X1_ {x,y}终点,定义形状的中心。
center_L1 = (X0 + X1) / 2.
2)然后找到直线的斜率(角度)。
length = 10 # Line size
thickness = 2
angle = math.atan2(X0[1] - X1[1], X0[0] - X1[0])
3)使用坡度和形状参数,您可以计算出框末端的以下坐标。
UL = (center_L1[0] + (length / 2.) * cos(angle) - (thickness / 2.) * sin(an
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。