2014-01-05 4 views
0

현재 타원형 도구가 올바르게 작동하지 않았던 방식을 변경하고 있습니다. 파이썬 2.7.5 및 파이 게임을 사용하여 내 페인트 프로그램 용으로 만듭니다. 나는 아래 지점에서 오른쪽을 제외한 모든 방향으로가는 타원을 만들려고 할 때파이썬 파트 2 타원형 도구

Traceback (most recent call last): 
File "C:\Users\Wisdom1\Desktop\Comp Science Files\Canvas.py", line 164, in <module> 
draw.ellipse(screen,(c),(x,y,radx,rady),sz2) 
ValueError: width greater than ellipse radius 

이 발생 : 저는 최근에이 오류가 발생했습니다. 나는 그 오류를 고치는 법을 모른다.

if mb[0] == 1 and canvas.collidepoint(mx,my): 
     screen.set_clip(canvas) 
     if tool == "ellipse": 
      screen.blit(copy,(0,0)) 
      radx = max(mx-x,1) 
      rady = max(my-y,1) 
      draw.ellipse(screen,(c),(x,y,radx,rady),sz2) 
     screen.set_clip(None) 

SZ2 10에서 시작하여 마우스 휠까지 하강 또는마다 감소 또는 3만큼 증가 사이즈 변수 : 여기 내 타원 툴이다. 어떤 도움을 주셔서 감사합니다. 고마워요

답변

1

또한의 형태로 원 문을 사용할 수 있습니다 : 여기


몇 가지 실행 가능한 코드는 if-statement 작품이 있음을 보여주고, 감사합니다

draw.ellipse(screen,(c),(x,y,radx,rady), sz2 if sz2 < max(radx, raxy) else 0) 

일요일 밤에 일하는 또 다른 메시 학생)

0

곡선의 두께가 타원의 작은 반지름보다 큰 경우 파이 게임은 ValueError을 발생시킵니다. 그래서 당신은 if-statement를 사용하여이에 대해 보호 할 수 :

if sz2 < min(radx, rady)//2: 
    pygame.draw.ellipse(self.screen, green, box, sz2) 
else: 
    # sz2=0 fills the ellipse 
    pygame.draw.ellipse(self.screen, green, box, 0) 

radx, rady는 타원을 경계 Rect의 폭과 높이입니다. 따라서 반경은 radxrady 중 작은 값의 절반입니다.

"""Based on http://www.pygame.org/docs/tut/intro/intro.html""" 
import sys 
import pygame 

pygame.init() 
size = (width, height) = (320, 240) 
screen = pygame.display.set_mode(size) 
black = (0,0,0) 
green = [0, 255, 0] 
radx, rady = 50, 70 
box = [160-radx//2, 120-rady//2, radx, rady] 
width = 1 
delta = 2 
while True: 
    for event in pygame.event.get(): 
     if ((event.type == pygame.QUIT) or 
      (event.type == pygame.KEYDOWN and 
      event.key == pygame.K_ESCAPE)): 
      sys.exit() 
    screen.fill(black) 
    if 0 < width < min(radx, rady)//2: 
     pygame.draw.ellipse(screen, green, box, width) 
    else: 
     if width > 0: 
      pygame.draw.ellipse(screen, green, box, 0) 
     delta *= -1 
    width += delta 
    pygame.display.flip() 
    pygame.time.delay(100)