private void Set_nodeColor_gradient(ref yed_node_color_line_class yED_node_color_line, float nodeValue, float maxValue, float minValue) { if (nodeValue <= 0) { yED_node_color_line.Hexadecimal_color = Math_class.Get_hexadecimal_code(150, 150, 150); } else { yED_node_color_line.Hexadecimal_color = Get_hexadecimal_nodeColor_gradient(nodeValue, maxValue, minValue); } }
private string Get_hexadecimal_nodeColor_gradient(float nodeValue, float maxValue, float minValue) { if (float.IsPositiveInfinity(nodeValue)) { nodeValue = float.MaxValue; } if (float.IsPositiveInfinity(maxValue)) { maxValue = float.MaxValue; } float relative_node_value = (nodeValue - minValue) / (maxValue - minValue); int red = -1; int green = -1; int blue = -1; int max_blue = 100; int max_green = 150; int max_red = 255; float step_size = 0.33333333333333333333333333333333F; if (relative_node_value < step_size) // Blue --> green { red = 0; green = (int)Math.Round(relative_node_value / step_size * max_green); blue = max_blue - (int)Math.Round(relative_node_value / step_size * max_blue); } else if ((relative_node_value >= step_size) && (relative_node_value < 2 * step_size)) // Green --> Yellow { red = (int)Math.Round((relative_node_value - step_size) / step_size * max_red); green = max_green; blue = 0; } else // Yellow --> red { red = max_red; green = max_green - (int)Math.Round((relative_node_value - 2 * step_size) / step_size * max_green); blue = 0; } return(Math_class.Get_hexadecimal_code(red, green, blue)); }