首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >draw.lines返回什么?

draw.lines返回什么?
EN

Stack Overflow用户
提问于 2020-11-16 14:40:39
回答 3查看 79关注 0票数 0

据我所知,draw.lines把传递给它的每一个坐标连接起来,所以如果我们有A到B,C会画一条从坐标A到坐标B,从B到C的直线,如果封闭是真的,它会从坐标A画一条线来坐标C,所以它总是加入第一个坐标,最后一个坐标,对吗?

我不明白的是rect变量返回了什么..。我认为每次添加一个新的坐标时,它都会返回(starting_point,rectangle_size),其中起始点是第一个坐标,矩形大小由第一个坐标和最后一个坐标的距离计算,然后用draw.rect绘制矩形,但我认为理由不对,因为如果我将这种类型的坐标添加到列表中,矩形将保持不变。

代码:

代码语言:javascript
运行
复制
"""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()
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-11-16 14:46:09

pygame.draw.lines()返回一个包含行的所有点的pygame.Rect对象:

如果不绘制任何内容,则对更改后的像素进行重新绘制,边框的位置将是点参数中第一个点的位置(浮点值将被截断),其宽度和高度将为0。

矩形不是从直线上的任何特定点开始的,而是足够大来包围直线上的所有点。

它返回的内容与以下相同:

代码语言:javascript
运行
复制
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)
票数 1
EN

Stack Overflow用户

发布于 2020-11-16 14:45:46

根据医生们

返回: 如果不绘制任何内容,则对更改后的像素进行重新绘制,边框的位置将是点参数中第一个点的位置(浮点值将被截断),其宽度和高度将为0。

票数 0
EN

Stack Overflow用户

发布于 2020-11-17 10:31:17

,这是我做的推理:

代码语言:javascript
运行
复制
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()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64860039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档