@Pushunter

Как заполнить фигуру в pygame?

Здравствуйте, недавно начал изучать модуль pygame и столкнулся со следующей проблемой. Есть код, с помощью которого я могу рисовать мышкой фигуры и затем сохранять эту поверхность как картинку. Проблема стоит в том - как залить область внутри моей фигуры каким-нибудь цветом? Я знаю точно, что кривая должна быть замкнута.
import pygame as py
import sys

py.init()
White = (255,255,255)
Black = (0,0,0)
clock = py.time.Clock()
H = 400
W = 600
sc = py.display.set_mode((W,H))
sc.fill(White)
py.display.set_caption('Curve drawing')
py.display.update()
draw = False

while 1:
    for i in py.event.get():
        if i.type == py.QUIT:
            py.image.save(sc,r'C:/Users/Xiaomi' + '/temporary.png')
            py.quit()
            sys.exit()
        elif i.type == py.MOUSEBUTTONDOWN:
            if i.button == 1:
                draw = True
            elif i.button == 2:
                sc.fill(White)
                py.display.update()
        elif i.type == py.MOUSEBUTTONUP:
            if i.button == 1:
                draw = False
    if draw == True:
        py.draw.circle(sc,Black,i.pos,7)
        py.display.update()


Вот пример фигур.
5f41852e7694f864755059.png
  • Вопрос задан
  • 2228 просмотров
Решения вопроса 1
@DollaR84
В pygame при рисовании различных фигур заливка определяется в зависимости от наличия параметра ширины линии.
То есть, в вашем случае:
py.draw.circle(sc,Black,i.pos,7)
последний параметр 7 указывает ширину линии, поэтому заливка не происходит.
Если этот параметр убрать, то весь круг зальется черным цветом.
Если надо определить и заливку и цвет контура разными цветами, то необходимо нарисовать фигуру дважды, сначала с заливкой, а потом линией контура. Например так:
py.draw.circle(sc,Green,i.pos)
py.draw.circle(sc,Red,i.pos,7)

В таком случае получится круг залитый зеленным цветом, и красным контуром.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы