据我所知,draw.lines把传递给它的每一个坐标连接起来,所以如果我们有A到B,C会画一条从坐标A到坐标B,从B到C的直线,如果封闭是真的,它会从坐标A画一条线来坐标C,所以它总是加入第一个坐标,最后一个坐标,对吗?
我不明白的是rect变量返回了什么..。我认为每次添加一个新的坐标时,它都会返回(starting_point,rectangle_size),其中起始点是第一个坐标,矩形大小由第一个坐标和最后一个坐标的距离计算,然后用draw.rect绘制矩形,但我认为理由不对,因为如果我将这种类型的坐标添加到列表中,矩形将保持不变。
代码:
"""Place a polygone line with the clicks of the mouse."""
import pygame
from pygame.locals import *
RED = (255, 0, 0)
GREEN = (0, 255, 0)
GRAY = (150, 150, 150)
pygame.init()
screen = pygame.display.set_mode((640, 240))
drawing = False
points = []
running = True
while running:
for event in pygame.event.get():
if event.type == MOUSEBUTTONDOWN:
points.append(event.pos)
drawing = True
elif event.type == MOUSEBUTTONUP:
drawing = False
elif event.type == MOUSEMOTION and drawing:
points[-1] = event.pos
screen.fill(GRAY)
if len(points)>1:
rect = pygame.draw.lines(screen, RED, True, points, 3)
pygame.draw.rect(screen, GREEN, rect, 1)
pygame.display.update()
pygame.quit()
发布于 2020-11-16 14:46:09
pygame.draw.lines()
返回一个包含行的所有点的pygame.Rect
对象:
如果不绘制任何内容,则对更改后的像素进行重新绘制,边框的位置将是点参数中第一个点的位置(浮点值将被截断),其宽度和高度将为0。
矩形不是从直线上的任何特定点开始的,而是足够大来包围直线上的所有点。
它返回的内容与以下相同:
list_x, list_y = zip(*points)
min_x, max_x = min(list_x), max(list_x)
min_y, max_y = min(list_y), max(list_y)
rect = pygame.Rect(min_x, min_y, max_x-min_x, max_y-min_y)
发布于 2020-11-16 14:45:46
根据医生们
返回: 如果不绘制任何内容,则对更改后的像素进行重新绘制,边框的位置将是点参数中第一个点的位置(浮点值将被截断),其宽度和高度将为0。
发布于 2020-11-17 10:31:17
,这是我做的推理:
import pygame
def minore(lista_coordinate, asse):
dimensione = lista_coordinate[0][asse]
for coordinata in lista_coordinate:
if coordinata[asse] < dimensione:
dimensione = coordinata[asse]
return dimensione
def maggiore(lista_coordinate, asse):
dimensione = lista_coordinate[0][asse]
for coordinata in lista_coordinate:
if coordinata[asse] > dimensione:
dimensione = coordinata[asse]
return dimensione
pygame.init()
schermo = pygame.display.set_mode((500, 400))
punti = [(100, 100), (200, 100), (200, 50), (150, 80)]
larghezza_minore = minore(punti, 0)
larghezza_maggiore = maggiore(punti, 0)
larghezza_rettangolo = larghezza_maggiore - larghezza_minore
altezza_minore = minore(punti, 1)
altezza_maggiore = maggiore(punti, 1)
altezza_rettangolo = altezza_maggiore - altezza_minore
dimensioni_rettangolo = (larghezza_rettangolo, altezza_rettangolo)
inizio = (larghezza_minore, altezza_minore)
pygame.draw.lines(schermo, (255, 0, 0), True, punti, 3)
pygame.draw.rect(schermo, (0, 255, 0), (inizio, dimensioni_rettangolo), 1)
pygame.display.update()
https://stackoverflow.com/questions/64860039
复制相似问题