Bonjour tout le monde,
Mon problème est plus mathématique qu'autre chose mais bon,

Voila le contexte:

Je cherche à dessiner des cercles avec un dégradé de couleur.
La première étape était de faire un tableau contenant l’ensemble des pixels de l'objet.
-Mission accomplie-

La deuxième étape:

J'ai deux couleurs, "couleurInterieur" et "couleurExterieur".
J'ai "rayonDuCercle" et "distanceEntrePixelEtCentreDuCercle" que je vais simplifier par "distancePixel".
J'ai une variable "pourcentage" qui est relative à "distancePixel" par rapport à "rayonDuCercle".
Autrement dit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
double pourcentage = distancePixel/ rayonDuCercle * 100;
Ensuite, pour chaque pixels je dit qu'il est composé de "pourcentage" de "couleurInterieur", et de (100 - "pourcentage") de "couleurExterieur"
-Mission accomplie-

Voila maintenant mon problème:

Je veux intégrer une nouvelle variable que j'appelle "spread" (parce que l'anglais c'est bien aussi)
"Spread" et un pourcentage choisi par l'utilisateur de "rayonDuCercle" et représente la partie du cercle qui est influencer par le dégradé de couleur.

Ce qui veux dire que pour un "spread" de 50%,
si l'on simplifie le problème à un simple rayon du cercle,
en partant du centre du cercle,
les pixels de la première moitié du segment auront 100% de "couleurInterieur"
et pour la seconde moitié on applique les règles de la deuxième étape
donc un dégradé qui va de "couleurInterieur" à "couleurExterieur".

J'ai quelques pistes:

Je pensais faire un truc comme ça:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
double pourcentage = distancePixel/ rayonDuCercle * pourcentagePlus;
J'explique "pourcentagePlus":
Si je reprend le model du "spread" de 50%,
on peux imaginé modifier "pourcentage" pour qu'il s’étende de 0 à 200%.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
double pourcentagePlus = (100 * (100 / spread));
Puis l'on dit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
if(pourcentage > 100) pourcentage = 100;
Mais là le problème c'est que je vais de 0 à 100 % sur la première partie du segment
et 100% partout sur la deuxième.
Donc je fait un dégradé à l’intérieur du cercle alors que je le souhaite en périphérie.

Le fait d'avoir écrie tout ça m'a déjà bien aider.
Voilà ce que j'ai rajouter:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
double pourcentagePlus = 100 * (100 / spread);
double tempo = (distancePixel / rayonDuCercle) * pourcentagePlus ;
double pourcentage = pourcentagePlus - tempo;
Ça fonctionne.
Merci beaucoup de votre aide.