pycairo 中的箭头
Arrow in pycairo
我需要画一条有向线或箭头。
context.move_to (10,10)
context.line_to(10,100)
这提供了一条无向线,但我需要一个箭头。我如何在 pycairo 中完成此操作?
由于没有内置箭头,您必须从几何角度定义一个。方法如下。
arrow_length = 0.45
arrow_angle = math.pi/4
arrowhead_angle = math.pi/6
arrowhead_length = 0.3
ctx.move_to(0.5, 0.5) # move to center of canvas
ctx.rel_line_to(arrow_length * math.cos(arrow_angle), arrow_length * math.sin(arrow_angle))
ctx.rel_move_to(-arrowhead_length * math.cos(arrow_angle - arrowhead_angle), -arrowhead_length * math.sin(arrow_angle - arrowhead_angle))
ctx.rel_line_to(arrowhead_length * math.cos(arrow_angle - arrowhead_angle), arrowhead_length * math.sin(arrow_angle - arrowhead_angle))
ctx.rel_line_to(-arrowhead_length * math.cos(arrow_angle + arrowhead_angle), -arrowhead_length * math.sin(arrow_angle + arrowhead_angle))
ctx.set_source_rgb(0,0,0)
ctx.set_line_width(0.08)
ctx.stroke()
这将生成以下图像:
根据需要更改参数。
我需要画一条有向线或箭头。
context.move_to (10,10) context.line_to(10,100)
这提供了一条无向线,但我需要一个箭头。我如何在 pycairo 中完成此操作?
由于没有内置箭头,您必须从几何角度定义一个。方法如下。
arrow_length = 0.45
arrow_angle = math.pi/4
arrowhead_angle = math.pi/6
arrowhead_length = 0.3
ctx.move_to(0.5, 0.5) # move to center of canvas
ctx.rel_line_to(arrow_length * math.cos(arrow_angle), arrow_length * math.sin(arrow_angle))
ctx.rel_move_to(-arrowhead_length * math.cos(arrow_angle - arrowhead_angle), -arrowhead_length * math.sin(arrow_angle - arrowhead_angle))
ctx.rel_line_to(arrowhead_length * math.cos(arrow_angle - arrowhead_angle), arrowhead_length * math.sin(arrow_angle - arrowhead_angle))
ctx.rel_line_to(-arrowhead_length * math.cos(arrow_angle + arrowhead_angle), -arrowhead_length * math.sin(arrow_angle + arrowhead_angle))
ctx.set_source_rgb(0,0,0)
ctx.set_line_width(0.08)
ctx.stroke()
这将生成以下图像:
根据需要更改参数。