如何在线的上方和平行线的任意角度绘制文字?

我想把文字放置在线的中心位置(用可变的 “控制 “来控制)。distance). 有一种方法 drawLineDescription() 的方法。此方法取线的起点和终点,然后计算出中心点。x, y. 我已经与 angle 以确保文本被正确放置。不幸的是,我不知道如何将文字垂直放置在每一个角度的线条上,也就是说,根据旋转的情况,变量 x, y 得能动。如何补充呢?

def drawLineDescription(canvas, startX, startY, endX, endY, distance):
        lengthX = endX - startX
        lengthY = endY - startY
        x = int(startX+((lengthX)/2))
        y = int(startY+((lengthY)/2))

        angle = math.degrees(math.atan2(lengthY, lengthX)*-1)
        angle = round(angle)
        if angle < -90 or angle > 90:
           angle += 180

        canvas.create_text(x, y, angle=angle, font=("Arial", 12), text="exampleText")

最后应该是这样的(多行文字的例子–行与行之间从不交叉其文字)。结果示例

解决方案:

enter image description here

lengthX = endX - startX
lengthY = endY - startY
fullLength = math.sqrt(lengthX**2 + lengthY**2)
#unit direction vector
ux = lengthX / fullLength
uy = lengthY / fullLength
#unit normal
if ux < 0:
    nx, ny = -uy, ux
else:
    nx, ny = uy, -ux
#text center point (D at the picture)
cx = x + nx * distance
cy = y + ny * distance

#if you need start of text (S at the picture)
sx = x + nx * distance - ux * halfwidth
sy = y + ny * distance - uy * halfwidth

给TA打赏
共{{data.count}}人
人已打赏
未分类

从返回SQL结果的存储函数过程中生成JSON?

2022-9-11 1:06:37

未分类

从数据框架中提取每11行数据

2022-9-11 1:06:39

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索