对于我正在处理的应用,我正在使用给定坐标在画布上绘制一条线。问题是我需要在它旁边画一条虚线。由于坐标来自API,因此我只能将这些坐标用于虚线。有没有办法实现这个目标?我真的无法理解。
我绘制当前行的方式:
Path line = new Path();
boolean first = true;
for (CircleArea circle : mCircles) {
canv.drawCircle(circle.getDrawX(), circle.getDrawY(), mCircleRadius, mCirclePaint);
if(!first) {
line.lineTo(circle.getDrawX(), circle.getDrawY());
} else {
line.moveTo(circle.getDrawX(), circle.getDrawY());
}
first = false;
}
canv.drawPath(line, mLinePaint);
样本坐标:
答案 0 :(得分:1)
您需要执行以下操作,考虑到虚线将在开始时在主线上方绘制并继续如下:
通过这种方式,您将跟踪原始线,始终执行操作时记住坐标的最后一个值并将它们与新坐标值进行比较。
答案 1 :(得分:0)
此代码段可用于绘制短划线路径
Paint paint = new Paint();
paint.setStyle(Paint.Style.STROKE);
paint.setPathEffect(new DashPathEffect(new float[] {20,20}, 0));
paint.setColor(Color.RED);
paint.setStrokeWidth(10);
canvas.drawPath(line, paint);
答案 2 :(得分:0)
使用以下代码:
if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB) {
this.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
Paint p1 = new Paint();
p1.setARGB(255,0,0,0);
p1.setStyle(Paint.Style.FILL_AND_STROKE);
p1.setStrokeWidth(10);
canvas.drawLine(0,50,500,550,p1);
p1.setPathEffect(new DashPathEffect(new float[] {20,20},0));
canvas.drawLine(0,0,500,500,p1);
如果x和y都在变化,则上面的代码是在虚线上创建线的示例。将它与GingerHead的逻辑相结合,您将获得理想的路径。只需循环上面的代码并添加GingerHead的逻辑