2014-04-23 4 views
2

J'essaye de dessiner une forme de tarte avec la couleur remplie. J'ai essayé de le faire de différentes manières. Voici le code:Python dessiner des formes de tarte avec la couleur remplie

ball = pygame.draw.circle(self.screen, self.pink, self.pos, self.r, 0) 
pygame.gfxdraw.pie(self.screen, 60,60, 40, 0, 90,(0,255,0)) 
pygame.gfxdraw.arc(self.screen, 60,60, 40, 180, 270,(0,255,255)) 
pygame.draw.arc(self.screen, (255,0,255),ball,0, math.pi/4, ball.width/2) 

L'image de sortie est comme:
enter image description here

Je veux que les formes circulaires remplis de couleur, comme la forme de couleur magenta fait. J'ai utilisé la fonction arc et j'ai défini la ligne avec le rayon = pour atteindre ceci (4ème ligne dans le code). Cependant, la couleur n'est pas uniformément remplie. J'ai également essayé de dessiner une forme de tarte (2ème ligne dans le code) Cependant, je ne trouve pas un moyen de remplir la couleur ...

Merci beaucoup pour votre aide!

+0

Pourquoi ne pas utiliser python-matplotlib? Voir: http://matplotlib.org/1.2.1/examples/pylab_examples/pie_demo.html – schmi

+0

Merci pour votre suggestion. Je n'essaie pas de dessiner un graphique circulaire d'un tableau, donc ça ne marchera peut-être pas pour moi ... – Peine

Répondre

3

Vous pouvez simplement dessiner un polygone suffisamment fine (dans un intervalle par exemple de degré):

import math 
import pygame 

# Center and radius of pie chart 
cx, cy, r = 100, 320, 75 

# Background circle 
pygame.draw.circle(screen, (17, 153, 255), (cx, cy), r) 

# Calculate the angle in degrees 
angle = val*360/total 

# Start list of polygon points 
p = [(cx, cy)] 

# Get points on arc 
for n in range(0,angle): 
    x = cx + int(r*math.cos(n*math.pi/180)) 
    y = cy+int(r*math.sin(n*math.pi/180)) 
    p.append((x, y)) 
p.append((cx, cy)) 

# Draw pie segment 
if len(p) > 2: 
    pygame.draw.polygon(screen, (0, 0, 0), p) 
Questions connexes