我正在尝试使用pygame编写一个绘图程序,我遇到了椭圆工具的问题。我希望用户能够在保持鼠标时将椭圆绘制为实体或环形。然后,我希望用户能够在按住shift时绘制圆圈。我知道有办法做到这一点。我只是不知道如何。我有一个矩形工具,可以根据相同的想法绘制正方形,它的工作原理。事实并非如此。请帮忙。
if tool=="ellipse":
screen.blit(copy,(0,0))
a=min(mx,start[0])
b=min(my,start[1])
x=abs(mx-start[0])
y=abs(my-start[1])
if keys[304] or keys[305]:
y=x
if keys[32]:
if x<size*2 or y<size*2:
draw.ellipse(screen,(c),(a,b,x,y))
else:
draw.ellipse(screen,(c),(a,b,x,y),size)
else:
draw.ellipse(screen,(c),(a,b,x,y))
答案 0 :(得分:0)
我不知道你在那里做什么,但它看起来不必要地复杂。所有你需要的是这样的东西,其中downpos是放置鼠标的位置,pos是鼠标现在的位置:
if tool=="ellipse":#and the mouse is being clicked
if downpos[0]<pos[0]:
l=downpos[0]
else:
l=pos[0]
if downpos[1]<pos[1]:
t=downpos[0]
else:
t=pos[0]
if shiftDown:
if l<t:
pygame.draw.ellipse(screen, c, (l, l, abs(downpos[0]-pos[0]), abs(downpos[1]-pos[1])), size)
else:
pygame.draw.ellipse(screen, c, (t, t, abs(downpos[0]-pos[0]), abs(downpos[1]-pos[1])), size)
else:
pygame.draw.ellipse(screen, c, (l, t, abs(downpos[0]-pos[0]), abs(downpos[1]-pos[1])), size)
我没有对此进行过测试,所以如果它不起作用,请告诉我。