2017-01-02 11 views
0

Я использую androidplot с PanZoom прикрепленного:Androidplot нарисовать круг с заданной точкой и радиусом

PanZoom.attach(plot); 

Поэтому я могу увеличивать и уменьшать масштаб, как это должно быть.

Теперь я хочу нарисовать круг в данной точке. Прямо сейчас я использую ширину строчки, чтобы установить размер круга. Но когда я увеличиваю и уменьшаю масштаб, размер круга остается тем же, хотя он должен масштабироваться в соответствии с уровнем масштабирования. Итак, представьте, что я увеличиваю масштаб бесконечно, круг должен при определенном уровне масштабирования охватывать весь экран.

Но это не так. Как я могу это достичь? Я думал о том, что увеличил ширину строчки круга в соответствии с увеличением, но я не смог получить зум-уровень и не получить уровни домена слева и справа от графика.

EDIT: В папке xml я создаю файл, например. circle.xml:

<?xml version="1.0" encoding="utf-8"?> 
<config 
fillPaint.color="#00000000" 
linePaint.color="#00000000" 
linePaint.strokeWidth="0dp" 
pointLabelFormatter.textPaint.color="#FFFFFF" 
vertexPaint.color="#371cd1d4" 
vertexPaint.strokeWidth="20dp"/> 

и в Java

sigmaLabelFormatter = new LineAndPointFormatter(); 
    sigmaLabelFormatter.setPointLabelFormatter(new PointLabelFormatter()); 
    sigmaLabelFormatter.configure(activity.getApplicationContext(), R.xml.circle); 
    sigmaLabelFormatter.setPointLabelFormatter(null); 
+0

Что ваш код для создания круга? – Danieboy

ответ

0

Я нашел решение моей проблемы, так как я, наконец, удалось:

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

или, если быть точнее, получить ширину участка.

Поскольку размеры участка в метрах, я делаю расчет следующим образом:

private float calculateDP(float px){   
    return px/(densityDpi/densityDefault); 
} 

private float pixelsPerMeter(float value){ 
    float w = plot.getGraph().getWidgetDimensions().canvasRect.width(); 
    float w2 = plot.getBounds().getWidth().floatValue(); 
    return value * (w/w2); 
} 

private void init(Activity activity){ 
    densityDpi = activity.getResources().getDisplayMetrics().densityDpi; 
    densityDefault = android.util.DisplayMetrics.DENSITY_DEFAULT; 
} 

private void onCreate(){ 
// ... lots of stuff 
labelFormatter.getVertexPaint().setStrokeWidth(calculateDP(pixelsPerMeter(2))); 
} 

Может это кому-то помочь там ...

0

Увеличение влияет только на рисунок данных XYSeries; если вы нарисуете прямо на холсте, он будет нарисован именно там, где вы указываете на холсте, независимо от панорамирования/масштабирования.

Одна вещь, которую вы можете сделать, это сделать серию, чтобы представить свой круг и нарисовать круг. Это заставит круг реагировать на действия панорамирования и масштабирования. Трудная часть будет собирать достаточно очков, чтобы гарантировать, что круг выглядит плавным на самом высоком поддерживаемом уровне масштабирования.

+0

Привет, Я действительно рад PanZoom и т. Д., Единственное, круг остается тем же размером в пикселях. Но когда я увеличиваю масштаб, мне бы хотелось, чтобы круг стал больше и наоборот. Я вижу вашу точку зрения на представление круга как точек. Единственная проблема заключается в том, что круг динамичен, поэтому он сильно меняется. Вы можете четко видеть мою проблему, если вы запустите образец приложения androidplot. Я хотел бы, чтобы пузыри в примере с пузырьковой диаграммой меняли свой размер в зависимости от уровня масштабирования ... – Johan

+0

ах, я думал, что вы просто рисуете круги на холсте ... не понимал, что вы используете серии пузырей.то, что вы хотите сделать, возможно - плохо обновите свой ответ после им в месте, где я могу написать код: p – Nick

+0

У меня была возможность сыграть с этим немного сегодня и быстро столкнулась с осложнением; потому что область/диапазон часто являются полностью независимыми шкалами/типами значений и могут масштабироваться независимо, нет простого способа масштабировать размер пузырька исключительно на основе масштабирования, не ограничивая масштабирование пузырьков для увеличения событий на одной оси или добавляя дополнительные свойства к серии, определяющие вид масштабного коэффициента для каждой оси. Вы знаете, какой из этих подходов лучше всего подходит для вашего случая использования? – Nick

 Смежные вопросы

  • Нет связанных вопросов^_^