Настройка диаграммы столбца Flex - PullRequest
0 голосов
/ 06 апреля 2010

Когда я настроил ColumnChart во Flex с помощью переопределенной функции updateDisplayList, цвета в легенде больше не отображаются.Как вы увидите на рисунке ниже:

http://i41.tinypic.com/mim35d.png

Я что-то пропустил?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 07 апреля 2010

Вы можете отформатировать маркеры легенды с помощью legendMarkerRenderer. Эта статья показывает вам, как к нижней части: http://livedocs.adobe.com/flex/3/html/help.html?content=charts_formatting_13.html

Вы также можете настроить свой LegendItem еще больше, создав свой собственный LegendItem: http://livedocs.adobe.com/flex/3/langref/mx/charts/LegendItem.html

Пример для настройки вашей легенды: Как исключить серию в легенде (Flex)

0 голосов
/ 06 апреля 2010

Если вы хотите посмотреть исходный код, вот что я сделал.

функция защиты от переопределения updateDisplayList (unscaledWidth: Number, unscaledHeight: Number): недействительный { super.updateDisplayList (unscaledWidth, unscaledHeight);

        var fill:IFill;
        var state:String = "";

        if (_data is ChartItem && _data.hasOwnProperty('fill'))
        {
            state = _data.currentState;
            fill = _data.fill;
        }       
        else
            fill = GraphicsUtilities.fillFromStyle(getStyle('fill'));

        var color:uint;
        var adjustedRadius:Number = 0;

        color = ColorUtil.adjustBrightness2(GraphicsUtilities.colorFromFill(fill),-20);
        fill = new SolidColor(color);       
        adjustedRadius = getStyle('adjustedRadius');
        if (!adjustedRadius)
            adjustedRadius = 0;


        var stroke:IStroke = getStyle("stroke");

        var w:Number = stroke ? stroke.weight / 2 : 0;

        var rc:Rectangle = new Rectangle(w - adjustedRadius, w - adjustedRadius, width - 2 * w + adjustedRadius * 2, height - 2 * w + adjustedRadius * 2);

        var g:Graphics = graphics;
        g.clear();      
        g.moveTo(rc.left,rc.top);
        if (stroke)
            stroke.apply(g);
        if (fill)
            fill.begin(g,rc);
        g.lineTo(rc.right-5,rc.top);
        g.lineTo(rc.right-5,rc.bottom);
        g.lineTo(rc.left+5,rc.bottom);
        g.lineTo(rc.left+5,rc.top);
        if (fill)
            fill.end(g);

}
...