Как настроить CircleItemRenderer в диаграмме Flex? - PullRequest
1 голос
/ 10 апреля 2011
<mx:LineSeries form="curve" displayName="BG" yField="Value" xField="DateTime">
    <mx:itemRenderer>
        <fx:Component>
            <mx:CircleItemRenderer height="10" width="20"/>
        </fx:Component>
    </mx:itemRenderer>
</mx:LineSeries>

Я хочу просто увеличить круги на гибкой диаграмме ... Я думал, что установка высоты и ширины может изменить вещи ... Есть ли способ установить размер circleItemRenderer?или мне нужно создать целый пользовательский класс?

Я надеюсь, что смогу сделать это с каким-то числом, потому что я хочу создать диаграмму, в которой размер круга зависит от другого значения.Мысли? * * 1004

Ответы [ 2 ]

2 голосов
/ 10 апреля 2011

LineSeries и другие серии имеют стили 'radius'

Указывает радиус в пикселях элемента диаграммы в каждой точке данных.По умолчанию элемент управления PlotChart рисует круг в каждой точке данных.Вы можете установить это свойство в MXML или используя стили.Значение по умолчанию - 5 пикселей.

и 'AdjustRadius':

Указывает количество пикселей, на которое увеличивается радиус элемента диаграммы при выделении или выборе.,Значением по умолчанию является 2.

Радиус определяет базовую ширину и высоту каждого средства визуализации элементов, аорректируемый радиус изменяет его в зависимости от взаимодействия с пользователем.Код для этого виден в элементах рендеринга.Вот немного из скина CircleItemRenderer:.

switch (state)
        {
            case ChartItem.FOCUSED:
            case ChartItem.ROLLOVER:
                if (styleManager.isValidStyleValue(getStyle('itemRollOverColor')))
                    color = getStyle('itemRollOverColor');
                else
                    color = ColorUtil.adjustBrightness2(GraphicsUtilities.colorFromFill(fill),-20);
                fill = new SolidColor(color);
                adjustedRadius = getStyle('adjustedRadius');
                if (!adjustedRadius)
                    adjustedRadius = 0;
                break;
            case ChartItem.DISABLED:
                if (styleManager.isValidStyleValue(getStyle('itemDisabledColor')))
                    color = getStyle('itemDisabledColor');
                else
                    color = ColorUtil.adjustBrightness2(GraphicsUtilities.colorFromFill(fill),20);
                fill = new SolidColor(GraphicsUtilities.colorFromFill(color));
                break;
            case ChartItem.FOCUSEDSELECTED:
            case ChartItem.SELECTED:
                if (styleManager.isValidStyleValue(getStyle('itemSelectionColor')))
                    color = getStyle('itemSelectionColor');
                else
                    color = ColorUtil.adjustBrightness2(GraphicsUtilities.colorFromFill(fill),-30);
                fill = new SolidColor(color);
                adjustedRadius = getStyle('adjustedRadius');
                if (!adjustedRadius)
                    adjustedRadius = 0;
                break;
        }

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

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

        rcFill.right = unscaledWidth;
        rcFill.bottom = unscaledHeight;

        var g:Graphics = graphics;
        g.clear();      
        if (stroke)
            stroke.apply(g,null,null);
        if (fill)
            fill.begin(g, rcFill, null);
        g.drawEllipse(w - adjustedRadius,w - adjustedRadius,unscaledWidth - 2 * w + adjustedRadius * 2, unscaledHeight - 2 * w + adjustedRadius * 2);

        if (fill)
            fill.end(g);

Скин CircleItemRenderer состоит всего из 200 строк, и большая часть кода находится в методе updateDisplayList.Вы можете легко создать новый скин или просто переопределить метод updateDisplayList, чтобы установить радиус на основе данных, которые представляет средство визуализации (используя что-то вроде 'newRadius = data.someValue' в методе updateDisplayList).

0 голосов
/ 26 декабря 2012

Если вы просто хотите увеличить размер элемента круга, используйте свойство scaleX, scaleY.

...