【问题标题】:How to get the surface from a rect/line如何从矩形/线中获取表面
【发布时间】:2017-02-18 16:33:48
【问题描述】:

我试图找到一条线与我正在制作的打砖块中的一块砖相撞的点。我发现最合乎逻辑的方法是从行中获取掩码并在返回点时使用 collidemask。好吧,正如我尝试过的那样:

linemask = pygame.mask.from_surface(pygame.draw.line(screen, (0,0,0), bola.line[0], bola.line[1], 2)) 

它给了我这个错误:

TypeError:参数 1 必须是 pygame.Surface,而不是 pygame.Rect

表示输入(在本例中为直线)不能是矩形,但必须是曲面。您知道如何从 rect 或任何替代解决方案中获取表面吗?

【问题讨论】:

    标签: python pygame


    【解决方案1】:

    pygame.draw.line 在 Surface 上绘制并以 Rect 对象的形式返回受影响的区域。

    您绘制的 Surface 是 screen。所以它是 screen 你想创建一个面具。或者,创建一个您在其上使用 pygame.draw 的新 Surface 并从中创建一个遮罩。或者从屏幕的次表面创建一个蒙版(这样您就不必从整个屏幕创建蒙版),如下所示:

    rect = pygame.draw.line(screen, (0,0,0), bola.line[0], bola.line[1], 2)
    surface = screen.subsurface(rect)
    mask = pygame.mask.from_surface(surface)
    

    【讨论】:

      猜你喜欢
      • 2015-07-11
      • 2018-04-01
      • 1970-01-01
      • 2012-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-05
      • 2016-08-31
      相关资源
      最近更新 更多