python - 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()
这将产生以下图像:
根据需要更改参数。
推荐阅读
- javascript - 如何从根变量 CSS 更改 SCSS 变量
- c# - C# 文本字符串中的双 " 标记
- flutter - 停靠在 Flutter 中的可扩展浮动操作按钮
- swift - 从另一个 tabview 的子视图导航到 tabview 的子视图
- c# - 无法读取所有串行端口数据,波特率 3000000
- kotlin - Kotlin - 对象过滤器列表
- java - 互联网连接恢复后,Firestore 快照侦听器仅提供最后一项
- html - 在 CodeIgniter 中保存不完整的数据(视图到控制器)
- python - 如何在熊猫中将日期索引拆分为单独的日、月、年列
- firebase - 识别从本地服务或托管到云后调用的 Firebase 函数