Установка screen.fill в качестве градиента в Pygame?

1

Я пытаюсь установить свой фон как градиент от черного к красному (где переход вертикальный/верхний черный, а нижний - красный). Как я могу достичь этого эффекта?

Теги:
background
pygame
gradient
background-color

1 ответ

1
Лучший ответ

Там хороший модуль под названием gradients.py by DR0ID.

Здесь используется более простая функция вертикального градиента, которая использует линейную интерполяцию:

def vertical(size, startcolor, endcolor):
    """
    Draws a vertical linear gradient filling the entire surface. Returns a
    surface filled with the gradient (numeric is only 2-3 times faster).
    """
    height = size[1]
    bigSurf = pygame.Surface((1,height)).convert_alpha()
    dd = 1.0/height
    sr, sg, sb, sa = startcolor
    er, eg, eb, ea = endcolor
    rm = (er-sr)*dd
    gm = (eg-sg)*dd
    bm = (eb-sb)*dd
    am = (ea-sa)*dd
    for y in range(height):
        bigSurf.set_at((0,y),
                        (int(sr + rm*y),
                         int(sg + gm*y),
                         int(sb + bm*y),
                         int(sa + am*y))
                      )
    return pygame.transform.scale(bigSurf, size)

Также существует более универсальная функция vertical_func которая позволяет передавать разные функции для каждого цветового канала.

  • 0
    Если кто-то хочет узнать больше о функциях формирования, с помощью которых вы можете управлять градиентами, посмотрите Книгу шейдеров .

Ещё вопросы

Сообщество Overcoder
Наверх
Меню