上下文 我正在使用MS Chart,如果值是标注(重新定位在系列之外),则需要使我的系列标签为黑色。
实际上,系列标签显示在系列内部,我正在根据系列颜色暗度/亮度因子更新标签颜色。如果系列颜色较暗,则标签颜色将为白色,如果系列颜色较浅,则使用以下代码将标签颜色设置为白色
double brightnessWhite = 255;
double brightnessBackColor = (backColor.R * 299 + backColor.G * 587 + backColor.B * 114) / 1000;
double brightnessForeColor = (foreColor.R * 299 + foreColor.G * 587 + foreColor.B * 114) / 1000;
double factor = brightnessForeColor - brightnessBackColor;
double whiteFactor = brightnessWhite - brightnessBackColor;
if (factor <= 110 && factor >= -140) // text not legible
{
color = (whiteFactor >= 110 && whiteFactor <= -140) ? Color.Black : Color.White;
}
return color;
问题: 如果系列大小要小得多,则此处开始问题,然后由于启用了SmartLabelStyle标注属性,标签会重新定位到外部。如果我的系列颜色较深且非常小,那么在图表区域的系列之外绘制的白色标签也是白色的,因此标签将不再可见。 (图片已在下面附上)
我不能将整个标签的颜色变为灰色或其他颜色,因为如果不在系列之外它会影响所有标签。仅当标签重新定位在系列之外时,标签如何以黑色显示。