Je dois créer une logique de dégradé de 4 couleurs. Un des messages m'a donné le motif pour calculer le dégradé de 4 couleurs. Cependant, j'ai des difficultés à le mettre en œuvre.4 couleurs logique de dégradé nécessaire
Je suis en mesure de calculer la couleur du point E (milieu) mais je ne sais pas comment développer le gradient de celui-ci
mon code
COLORREF NewColor = RGB(255,0,0);
COLORREF NewColor2 = RGB(0,255,0);
COLORREF NewColor3 = RGB(0,0,255);
COLORREF NewColor4 = RGB(255,255,0);
red_low = GetRValue(NewColor);
blue_low = GetBValue(NewColor);
green_low = GetGValue(NewColor);
red_high = GetRValue(NewColor2);
green_high= GetGValue(NewColor2);
blue_high = GetBValue(NewColor2);
red_low2 = GetRValue(NewColor3);
blue_low2 = GetBValue(NewColor3); // divide the difference in colours by the number of steps
green_low2 = GetGValue(NewColor3);
red_high2 = GetRValue(NewColor4);
green_high2 = GetGValue(NewColor4); // divide the difference in colours by the number of steps
blue_high2 = GetBValue(NewColor4);
double distance_a = sqrt((double)((0-W)^2+(0-H/2)^2));
double distance_b = sqrt((double)((350-W/2)^2+(0-H/2)^2));
double distance_c = sqrt((double)((350-W/2)^2+(100-H/2)^2));
double distance_d = sqrt((double)((0-W/2)^2+(100-H/2)^2));
double sum_distances = distance_a + distance_b + distance_c + distance_d;
double red = (red_low*distance_a + red_high*distance_b + red_low2*distance_c+ red_high2*distance_d)/sum_distances;
double green = (green_low*distance_a + green_high*distance_b + green_low2*distance_c+ green_high2*distance_d)/sum_distances;
double blue = (blue_low*distance_a + blue_high*distance_b + blue_low2*distance_c+ blue_high2*distance_d)/sum_distances;
COLORREF Color_E= RGB(red,green,blue);
Ane aider comment Futher le code est apprécié.
Qu'essayez-vous de faire? Interpoler la couleur à travers un rectangle? NewColori est-elle la couleur des coins? – user168715
Oui, je veux créer un sqaure ou un rectangle avec 4 couleurs dans 4 coins. Le pixel d'école sur l'écran devrait montrer le mélange approprié de ces quatre couleurs. Je dois le faire en utilisant SetPixel ou copier en frambuffer en utilisant memcpy. Les nouvelles couleurs sont des couleurs dans les coins. – user358791
Vous avez vraiment besoin de faire cela avec le LinearGradientBrush disponible dans ''. Inutile de réinventer cette roue. –