如何用androidPlot库绘制多边形?

时间:2015-05-21 10:09:01

标签: android polygon androidplot

我正在尝试使用AndroidPlot库绘制多边形 我成功地绘制了四个点,但它只绘制了多边形的三个边。 (它没有关闭多边形)
应填充多边形。我怎样才能做到这一点?

谢谢!

修改

我首先绘制一个点然后绘制多边形,因为我必须显示该点是否在多边形内。

private XYPlot plot;
plot = (XYPlot) findViewById(R.id.graph);

seriesPointFormat = new LineAndPointFormatter(
                    null,                   // line color
                    Color.rgb(5, 100, 150),                   // point color
                    null,                                   // fill color
                    new PointLabelFormatter()); 

            float[] xTol = intent.getExtras().getFloatArray("tolerancesX");
            float[] yTol = intent.getExtras().getFloatArray("tolerancesY");

            Float[] xTolerances = new Float[xTol.length];
            Float[] yTolerances = new Float[yTol.length];

        for(int i = 0; i< xTol.length; i++)
            xTolerances[i] = xTol[i];

        for(int i = 0; i< yTol.length; i++)
            yTolerances[i] = yTol[i];

            //Example
            x=0.35f;
            y=0.65f;
            //Turn the above arrays into XYSeries':
            XYSeries seriesPoint = new SimpleXYSeries(
                  Arrays.asList(x),       
                  Arrays.asList(y), 
                  "point");                          // Set the display title of the series

            plot.getGraphWidget().setDomainValueFormat(new DecimalFormat("##.###"));

            // add a new series' to the xyplot:
            plot.addSeries(seriesPoint, seriesPointFormat);

            XYSeries seriesPolygon = new SimpleXYSeries(
                    Arrays.asList(xTolerances), 
                    Arrays.asList(yTolerances), 
                    "Polygon");

            LineAndPointFormatter seriesPolygonFormat = new LineAndPointFormatter(
                    Color.rgb(500, 0, 0),  // line color
                    Color.rgb(500, 100, 0), // point color
                    null, 
                    new PointLabelFormatter());

            seriesPolygonFormat.getLinePaint().setStrokeWidth(2);

            plot.addSeries(seriesPolygon, seriesPolygonFormat);

1 个答案:

答案 0 :(得分:0)

答案显而易见,愚蠢的我......(Facepalm)

您只需在数组末尾添加第一个点。

        Float[] xTolerances = new Float[xTol.length+1];
        Float[] yTolerances = new Float[yTol.length+1];
        for(int i = 0; i< xTol.length; i++)
            xTolerances[i] = xTol[i];
        //add here the first x coordinate at the end of the array
        xTolerances[xTol.length] = xTol[0];

        for(int i = 0; i< yTol.length; i++)
            yTolerances[i] = yTol[i];
        //add here the first x coordinate at the end of the array
        yTolerances[yTol.length] = yTol[0];

并填写多边形:

LineAndPointFormatter seriesPolygonFormat = new LineAndPointFormatter(
                Color.rgb(500, 0, 0),  // line color
                Color.rgb(500, 100, 100), // point color
                Color.argb(50, 200, 0, 0), //fill color with alpha, to make the fill transparent
                new PointLabelFormatter());

我不会取消这个问题,也许对某人有用。