gpt4 book ai didi

python - 在 pycairo 中围绕其中心旋转文本

转载 作者:太空狗 更新时间:2023-10-29 21:20:18 24 4
gpt4 key购买 nike

社区。

我知道这里有很多答案、手册、教程和 Internet 上的引用资料,还有关于这个问题的更多信息。我也知道需要线性代数知识。但是,当我想到有时间弄清楚所有理论并在实践中解决练习时 - 我的头都炸了,我不能做最简单的事情:(

拜托,如果你知道一些快速的解决方案如何在渲染之前让文本绕着它的中心旋转 - 请告诉我,pleeease。

现在我有:

#...
cr.move_to(*text_center)
myX, myY = text_center[0] - (width / 2), text_center[1] + (height / 2)

cr.save()
cr.translate(myX, myY)
cr.rotate(radians(text_angle))
cr.show_text(letter)
cr.restore()
#...

但我的信并没有围绕着自己旋转。就像向右侧倒下一样:(我知道我的代码不正确。也许我怀念转型,但我不知道如何让它变得正确。

更新:不幸的是,文本不受翻译的影响,所以

cr.translate(10000, 10000)
cr.rotate(radians(15))
cr.show_text("hello")

将完全相同

cr.rotate(radians(15))
cr.show_text("hello")

而且我不知道如何在不创建新表面或其他东西(例如图形处理器中的新层)的情况下使文本在其中心旋转:(

最佳答案

至少在我的机器上可用的 cairo 版本 (1.8.8) 上,以下方法适用于我:

def text(ctx, string, pos, theta = 0.0, face = 'Georgia', font_size = 18):
ctx.save()

# build up an appropriate font
ctx.select_font_face(face , cairo.FONT_SLANT_NORMAL, cairo.FONT_WEIGHT_NORMAL)
ctx.set_font_size(font_size)
fascent, fdescent, fheight, fxadvance, fyadvance = ctx.font_extents()
x_off, y_off, tw, th = ctx.text_extents(string)[:4]
nx = -tw/2.0
ny = fheight/2

ctx.translate(pos[0], pos[1])
ctx.rotate(theta)
ctx.translate(nx, ny)
ctx.move_to(0,0)
ctx.show_text(string)
ctx.restore()

可以通过以下方式使用:

width = 500
height = 500
surface = cairo.ImageSurface(cairo.FORMAT_RGB24, width, height)
ctx = cairo.Context(surface)
ctx.set_source_rgb(1,1,1)
rect(ctx, (0,0), (width, height), stroke=False)
ctx.set_source_rgb(0,0,0)
for i in xrange(5):
for j in xrange(5):
x = 100 * i + 20
y = 100 * j + 20
theta = math.pi*0.25*(5*i+j)
text(ctx, 'hello world', (x, y), theta, font_size=15)
surface.write_to_png('text-demo.png')

text-demo.png

关于python - 在 pycairo 中围绕其中心旋转文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8463271/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com