用椭圆pygame画圆圈

时间:2013-12-21 03:49:38

标签: python pygame paint geometry ellipse

我正在尝试使用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))

1 个答案:

答案 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)

我没有对此进行过测试,所以如果它不起作用,请告诉我。