Подтвердить что ты не робот

Pygame: рисовать одиночный пиксель

Я ищу метод, который позволяет мне рисовать одиночный пиксель на экране дисплея. Например, когда я нажимаю кнопку мыши, я хочу, чтобы позиция щелкнутого пикселя меняла цвет. Я знаю, как читать мышь pos, но я не мог найти простую пиксельную ничью (есть метод screen.fill, но он не работает так, как я хочу).

4b9b3361

Ответ 1

Вы можете сделать это с помощью surface.set_at():

surface.set_at((x, y), color)

Вы также можете использовать pygame.gfxdraw.pixel():

from pygame import gfxdraw
gfxdraw.pixel(surface, x, y, color)

Обратите внимание, однако, предупреждение:

ЭКСПЕРИМЕНТАЛЬНЫЙ!: означает, что этот api может измениться или исчезнуть позже релизы pygame. Если вы используете это, ваш код сломается со следующим релиз pygame.

Вы можете использовать surface.fill() для выполнения задания:

def pixel(surface, color, pos):
    surface.fill(color, (pos, (1, 1)))

Вы также можете просто нарисовать линию с начальной и конечной точками как то же самое:

def pixel(surface, color, pos):
    pygame.draw.line(surface, color, pos, pos)

Ответ 2

Для тех, кто интересуется более современным ответом на вопрос, вы можете использовать pygame.draw.circle(), чтобы нарисовать один пиксель в данной позиции (или центре).

pygame.draw.circle(surface, color, center, 0)

В документации конкретно сказано:

radius (int или float) - радиус круга, измеренный по параметру center, радиус 0 будет рисовать только центральный пиксель

Ответ 3

Один из способов сделать это - нарисовать линию, начинающуюся и заканчивающуюся в одной и той же точке.

pygame.draw.line(surface, (255,255,255), (x,y), (x,y))