PyGame应用程序中的SVG渲染

发布于 2021-01-29 18:30:29

pyGame应用程序中,我想呈现SVG中描述的无分辨率的GUI小部件。

我可以使用什么工具和/或库来实现此目标?

(我喜欢OCEMP GUI工具箱,但它的呈现似乎取决于位图)

关注者
0
被浏览
52
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    这是一个完整的示例,其中结合了其他人的提示。它应该从当前目录渲染一个名为test.svg的文件。它已在Ubuntu 10.10,python-cairo
    1.8.8,python-pygame 1.9.1,python-rsvg 2.30.0上进行了测试。

    #!/usr/bin/python
    
    import array
    import math
    
    import cairo
    import pygame
    import rsvg
    
    WIDTH = 512
    HEIGHT = 512
    
    data = array.array('c', chr(0) * WIDTH * HEIGHT * 4)
    surface = cairo.ImageSurface.create_for_data(
        data, cairo.FORMAT_ARGB32, WIDTH, HEIGHT, WIDTH * 4)
    
    pygame.init()
    window = pygame.display.set_mode((WIDTH, HEIGHT))
    svg = rsvg.Handle(file="test.svg")
    ctx = cairo.Context(surface)
    svg.render_cairo(ctx)
    
    screen = pygame.display.get_surface()
    image = pygame.image.frombuffer(data.tostring(), (WIDTH, HEIGHT),"ARGB")
    screen.blit(image, (0, 0)) 
    pygame.display.flip()
    
    clock = pygame.time.Clock()
    while True:
        clock.tick(15)
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                raise SystemExit
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看