Я ищу метод, который позволяет мне рисовать одиночный пиксель на экране дисплея. Например, когда я нажимаю кнопку мыши, я хочу, чтобы позиция щелкнутого пикселя меняла цвет. Я знаю, как читать мышь pos, но я не мог найти простую пиксельную ничью (есть метод screen.fill, но он не работает так, как я хочу).
Pygame: рисовать одиночный пиксель
Ответ 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))