Kbitnik
Messages postés125Date d'inscriptionmercredi 15 novembre 2000StatutMembreDernière intervention 2 mars 2006
-
6 févr. 2006 à 15:18
Kbitnik
Messages postés125Date d'inscriptionmercredi 15 novembre 2000StatutMembreDernière intervention 2 mars 2006
-
6 févr. 2006 à 17:12
Bonjour à tous,
j'ai un petit problème avec mon FillPie, en faite je crée un objet dans une de mes form avec 3 valeurs différentes que je passe en paramètres dans la form2 pour pouvoir faire mon camembert. Le problème c'est qu' il ne me finit pas mon camembert, il reste un petit espace non rempli. Pourtant je pense ne pas me tromper. Voici mon code :
public
void fillpie(
int X,
int Y)
{
Graphics g =
this.CreateGraphics();
int sum = co.GetA1() + co.GetA2() + co.GetA3();
float a1 = 360*(co.GetA1()*100/sum)/100;
float a2 = 360*(co.GetA2()*100/sum)/100;
float a3 = 360*(co.GetA3()*100/sum)/100;
g.FillPie(
new SolidBrush(Color.IndianRed),X,Y,250,250,-90,a1);
g.FillPie(
new SolidBrush(Color.Ivory),X,Y,250,250,-90+a1,a2);
g.FillPie(
new SolidBrush(Color.Aquamarine),X,Y,250,250,(-90+a1+a2),a3);
}
Les valeurs a1 a2 et a3 sont les 3 valeurs à partir duquel je crée le camembert.
cs_coq
Messages postés6351Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 6 févr. 2006 à 16:33
Et l'utilisation de 365 est mauvaise avec d'autres valeurs pour GetAx...
Ton problème n'est pas là, c'est plutôt une perte de données au niveau du calcul.
sum étant un int, la division donne un int, et donc une sacré perte de données.
Kbitnik
Messages postés125Date d'inscriptionmercredi 15 novembre 2000StatutMembreDernière intervention 2 mars 2006 6 févr. 2006 à 15:35
Oui je suis désolé pour le titre, j'ai fait une mauvaise manipe.
Titre : Problème avec FillPie et les angles
Et donc non la somme de a1 a2 a3 n'est pas supérieur ou égale a 360, c'est ça qui est frustrant, est-ce que les chiffres a virgule peuvent en être la cause ?
Kbitnik
Messages postés125Date d'inscriptionmercredi 15 novembre 2000StatutMembreDernière intervention 2 mars 2006 6 févr. 2006 à 16:02
Donc j'ai fait une revérification, donc j'arrive à 360 pile pour a1+a2+a3. Donc de là, je peux normalement faire mon camembert entier vu ke l'angle d'un rond est de 360°. Le camembert démarre au bon endroit (-90), mais à la fin il manque juste un petit bout qui n'est pas rempli. C'est pas normal... Mais je ne vois pas ce qui bloque
Kbitnik
Vous n’avez pas trouvé la réponse que vous recherchez ?
Kbitnik
Messages postés125Date d'inscriptionmercredi 15 novembre 2000StatutMembreDernière intervention 2 mars 2006 6 févr. 2006 à 16:12
Si je calcule a1 a2 et a3 comme ceci, je devrai obtenir 360 en tout or j'obtiens 354
float
a1 = 360*(co.GetA1()*100/sum)/100;
float a2 = 360*(co.GetA2()*100/sum)/100;
float a3 = 360*(co.GetA3()*100/sum)/100;
et par contre si j'uitilise ceci, j'obtiens 360 :
float a1 = 365*(co.GetA1()*100/sum)/100;
float a2 = 365*(co.GetA2()*100/sum)/100;
float a3 = 365*(co.GetA3()*100/sum)/100;