如何使用 androidPlot 库绘制多边形?
How to draw a polygon with androidPlot library?
我正在尝试使用 AndroidPlot
库绘制多边形。
我成功绘制了四个点,但它只绘制了多边形的 3 个边。 (它没有关闭多边形)
应填充多边形。我怎样才能做到这一点?
谢谢!
编辑:
我先画一个点,然后画多边形,因为我必须显示该点是否在多边形内部。
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);
答案很明显,愚蠢的我......(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());
我不会取消这个问题,也许对某人有用。
我正在尝试使用 AndroidPlot
库绘制多边形。
我成功绘制了四个点,但它只绘制了多边形的 3 个边。 (它没有关闭多边形)
应填充多边形。我怎样才能做到这一点?
谢谢!
编辑:
我先画一个点,然后画多边形,因为我必须显示该点是否在多边形内部。
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);
答案很明显,愚蠢的我......(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());
我不会取消这个问题,也许对某人有用。