Версия TeeChart MonoDroid

Я только начал оценивать версию TeeChart MonoDroid и имею некоторые незначительные проблемы со следующим кодом:

TChart _Chart = new TChart(context);
Bar _Bar1 = new Bar(_Chart.Chart);
Bar _Bar2 = new Bar(_Chart.Chart);

_Chart.Axes.Left.Increment = 25;
_Chart.Axes.Left.SetMinMax(0, 100);
_Chart.Axes.Left.Labels.Style = AxisLabelStyle.Mark;
_Chart.Axes.Visible = false;
_Chart.Walls.Left.Visible = false;
_Chart.Panel.Gradient.Visible = false;
_Chart.Panel.Transparent = true;
_Chart.Walls.Back.Color = System.Drawing.Color.White;
_Chart.Walls.Back.Width = 200;
_Chart.Walls.Back.Transparency = 90;
_Chart.Walls.Back.Gradient.Visible = false;
_Chart.Walls.Bottom.Size = 10;
_Chart.Walls.Bottom.Width = 200;
_Chart.Legend.Visible = false;
_Chart.Header.Visible = false;
_Chart.Aspect.View3D = true;
_Chart.SetBackgroundColor(Color.Transparent);

_Bar1.Add(50, "50%");
_Bar1.Depth = 10;
_Bar1.Pen.Color = System.Drawing.Color.Red;
_Bar1.Color = System.Drawing.Color.Red;
_Bar1.MarksOnBar = true;
_Bar1.MultiBar = MultiBars.Stacked;
_Bar1.Marks.Style = MarksStyles.Label;
_Bar1.Marks.Transparent = true;
_Bar1.Marks.Font.Color = System.Drawing.Color.White;
_Bar1.Marks.Font.Size = 18;
_Bar1.Marks.Font.Bold = true;
_Bar1.CustomBarWidth = 75;
_Bar1.MarksLocation = MarksLocation.Center;

_Chart.Series.Add(_Bar1);

_Bar2.Add(50, "50%");
_Bar2.Depth = 10;
_Bar2.Pen.Color = System.Drawing.Color.Black;
_Bar2.Color = System.Drawing.Color.Black;
_Bar2.MarksOnBar = true;
_Bar2.MultiBar = MultiBars.Stacked;
_Bar2.Marks.Style = MarksStyles.Label;
_Bar2.Marks.Transparent = true;
_Bar2.Marks.Font.Color = System.Drawing.Color.White;
_Bar2.Marks.Font.Size = 18;
_Bar2.Marks.Font.Bold = true;
_Bar2.CustomBarWidth = 75;
_Bar2.MarksLocation = MarksLocation.Center;

_Chart.Series.Add(_Bar2);

AbsoluteLayout absl = new AbsoluteLayout(this);

absl.SetBackgroundColor(Color.Transparent);

absl.AddView(_Chart, new AbsoluteLayout.LayoutParams(400, 1200, 0, 0));

Это создает один столбец с накоплением, 50% разделенный между красным и черным. Мои проблемы заключаются в следующем:

1) Что бы я ни пытался, я не могу сделать представление прозрачным - я бы хотел, чтобы любой базовый вид отображался через диаграмму.

2) Я не могу сделать нижнюю "стенку" глубже - я бы хотел, чтобы она была такой же глубины, как глубина стержня.

Я также испытываю проблему «мигания», когда пытаюсь обновить диаграмму, используя следующий код:

_Chart.Series[0].Clear();
_Chart.Series[1].Clear();

_Bar1.Add(HistoryRed, String.Format("{0:0,0.00}%", HistoryRed));
_Bar1.Depth = 10;
_Bar1.Pen.Color = System.Drawing.Color.Red;
_Bar1.Color = System.Drawing.Color.Red;
_Bar1.MarksOnBar = true;
_Bar1.MultiBar = MultiBars.Stacked;
_Bar1.Marks.Style = MarksStyles.Label;
_Bar1.Marks.Transparent = true;
_Bar1.Marks.Font.Color = System.Drawing.Color.White;
_Bar1.Marks.Font.Size = 18;
_Bar1.Marks.Font.Bold = true;
_Bar1.CustomBarWidth = 75;
_Bar1.MarksLocation = MarksLocation.Center;

_Chart.Series[0].Add(_Bar1);

_Bar2.Add(HistoryBlack, String.Format("{0:0,0.00}%", HistoryBlack));        
_Bar2.Depth = 10;
_Bar2.Pen.Color = System.Drawing.Color.Black;
_Bar2.Color = System.Drawing.Color.Black;
_Bar2.MarksOnBar = true;
_Bar2.MultiBar = MultiBars.Stacked;
_Bar2.Marks.Style = MarksStyles.Label;
_Bar2.Marks.Transparent = true;
_Bar2.Marks.Font.Color = System.Drawing.Color.White;
_Bar2.Marks.Font.Size = 18;
_Bar2.Marks.Font.Bold = true;
_Bar2.CustomBarWidth = 75;
_Bar2.MarksLocation = MarksLocation.Center;

_Chart.Series[1].Add(_Bar2);

Кажется, что весь Вид разрушается и создается заново, что дает краткую вспышку, когда он исчезает и снова появляется. Есть ли способ обновить Chart без перепрошивки?


person user1737571    schedule 11.10.2012    source источник


Ответы (1)


1) Что бы я ни пытался, я не могу сделать представление прозрачным - я бы хотел, чтобы любой базовый вид отображался через диаграмму.

Вам также нужно сделать заднюю стенку прозрачной:

  _Chart.Walls.Back.Transparent = true;

2) Я не могу сделать нижнюю "стенку" глубже - я бы хотел, чтобы она была такой же глубины, как глубина стержня.

Вы можете изменить это с помощью Chart3DPercent:

  _Chart.Aspect.Chart3DPercent = 25;

Кажется, что весь Вид разрушается и создается заново, что дает краткую вспышку, когда он исчезает и снова появляется. Есть ли способ обновить Chart без перепрошивки?

Недавно мы реализовали новую функцию для MfA, которая отключает масштабирование и прокрутку:

  _Chart.Zoom.Style = Steema.TeeChart.ZoomStyles.None;

Поскольку масштабирование или прокрутка не поддерживаются, диаграмма может отображаться более эффективно. Установщик TeeChart Mono для Android содержит демонстрацию графиков в реальном времени.

person Narcís Calvet    schedule 11.10.2012
comment
Хорошо, я попробовал новую версию, и использование ZoomStyles.None вызывает сбой в MonoDroid. Кроме того, использование техники repaint=false / repaint=true и Invalidate() вообще не обновляет диаграмму. Я изменил ваш образец графика в реальном времени, чтобы воспроизвести поведение, и загрузил его на странице загрузки Steema (он называется ZoomStyleCrashAndRepaintFailure.zip). - person user1737571; 11.10.2012
comment
@user1737571 user1737571 Я не могу воспроизвести проблему здесь, используя ваш проект. Должен ли я выполнить что-то конкретное, чтобы воспроизвести его? Какую версию MonoDroid вы используете? Я не уверен, была ли эта тестовая версия собрана с 4.2.4 или 4.2.5. Кроме того, вы можете попробовать другую версию: www.steema.us/files/public/RealTimeTeeChartMfADoubleBuffering.zip, в которой используется MfA 4.2.6. - person Narcís Calvet; 11.10.2012
comment
Здравствуйте еще раз, я обнаружил, что это связано с устройствами, на которых установлена ​​старая TeeChart.MonoDroid.dll. Если я развернусь на другом устройстве, на котором ранее не было проекта TeeChart, он будет работать правильно? Кажется, что сценарии сборки MonoDroid по какой-то причине не обновляют dll, даже если я делаю очистку/перестройку в VS. - person user1737571; 11.10.2012
comment
@user1737571 в качестве обновления, отладочная версия, реализующая описанные выше функции, только что была опубликована: noreferrer">steema.com/entry/137/ - person Narcís Calvet; 03.12.2012