我正在使用安装了PanZoom的androidplot:
PanZoom.attach(plot);
因此我可以放大和缩小它。
我接下来想要的是在给定点画一个圆圈。 现在我使用笔触宽度来设置圆的尺寸。 但是当我放大和缩小时,圆圈尺寸保持不变,尽管它应该根据缩放级别进行缩放。所以想象一下我无限放大,圆圈应该在一定量的缩放级别覆盖整个屏幕。
但事实并非如此。 我怎样才能做到这一点? 我正在考虑根据缩放级别大声增加圆的笔画宽度,但是我既不能获得缩放级别也不能获得绘图左侧和右侧的域级别。
编辑: 在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 :(得分:0)
缩放仅影响XYSeries数据的绘制;如果直接在画布上绘制,它将精确绘制在画布上指定的位置,而不管平移/缩放。
你可以做的一件事是制作一系列代表你的圆圈并在那里画圆圈。这将使圆圈响应平移和缩放操作。棘手的部分将选择足够的点,以确保圆圈在您支持的最高缩放级别下显得平滑。
答案 1 :(得分: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)));
}
可能会帮助那里的人......