From d505158845f40372b03d42abd0047942c977cd53 Mon Sep 17 00:00:00 2001 From: fctom1215 <fctom1215@outlook.com> Date: 星期日, 26 七月 2020 18:14:00 +0800 Subject: [PATCH] 绘图优化 --- app/src/main/java/safeluck/drive/evaluation/fragment/RoadDriveMapFragmentaa.java | 115 +++++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 95 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/RoadDriveMapFragmentaa.java b/app/src/main/java/safeluck/drive/evaluation/fragment/RoadDriveMapFragmentaa.java index d8bfc46..d878241 100644 --- a/app/src/main/java/safeluck/drive/evaluation/fragment/RoadDriveMapFragmentaa.java +++ b/app/src/main/java/safeluck/drive/evaluation/fragment/RoadDriveMapFragmentaa.java @@ -748,6 +748,9 @@ } scale_x = Math.round(Math.abs(50 / Math.sqrt(Math.pow(car[0][0], 2) + Math.pow(car[0][1], 2)) )); + + scale_x = 3; + scale_y = scale_x; base_x = bmp.getWidth() / 2; @@ -805,17 +808,42 @@ List<Integer> line = edgeBean.getLine(); Log.d(TAG, "璺竟娌� " + y + " 鍒嗘 " + line.size()); - path.moveTo((float) (base_x + (map[line.get(0)][0] - min_x) * scale_x), (float) (base_y + (map[line.get(0)][1] - min_y) * scale_y)); - Log.d(TAG, String.format("0. X = %f Y = %f", map[line.get(0)][0], map[line.get(0)][1])); + int draw_status = 0; - for (int z = 1; z < line.size(); z++) { - path.lineTo((float) (base_x + (map[line.get(z)][0] - min_x) * scale_x), (float) (base_y + (map[line.get(z)][1] - min_y) * scale_y)); - Log.d(TAG, String.format("%d. X = %f Y = %f", z, map[line.get(z)][0], map[line.get(z)][1])); + for (int z = 0; z < line.size(); z++) { + float scr_x = (float) (base_x + (map[line.get(z)][0] - min_x) * scale_x); + float scr_y = (float) (base_y + (map[line.get(z)][1] - min_y) * scale_y); + + if (scr_x >= 0 && scr_x <= bmp.getWidth() && scr_y >= 0 && scr_y <= bmp.getHeight()) { + if (draw_status == 0) { + path.moveTo(scr_x, scr_y); + draw_status = 1; + } else if (draw_status == 1) { + path.lineTo(scr_x, scr_y); + } + } else if (draw_status == 1) { + canvas2.drawPath(path, paint); + draw_status = 0; + } } - Log.d(TAG, "璺竟娌�......"); - canvas2.drawPath(path, paint); - Log.d(TAG, "璺竟娌垮畬姣�"); + if (draw_status == 1) { + canvas2.drawPath(path, paint); + draw_status = 0; + } + + +// path.moveTo((float) (base_x + (map[line.get(0)][0] - min_x) * scale_x), (float) (base_y + (map[line.get(0)][1] - min_y) * scale_y)); +// +// Log.d(TAG, String.format("0. X = %f Y = %f", map[line.get(0)][0], map[line.get(0)][1])); +// +// for (int z = 1; z < line.size(); z++) { +// path.lineTo((float) (base_x + (map[line.get(z)][0] - min_x) * scale_x), (float) (base_y + (map[line.get(z)][1] - min_y) * scale_y)); +// Log.d(TAG, String.format("%d. X = %f Y = %f", z, map[line.get(z)][0], map[line.get(z)][1])); +// } +// Log.d(TAG, "璺竟娌�......"); +// canvas2.drawPath(path, paint); + Log.d(TAG, "宸﹁矾杈规部瀹屾瘯"); } } @@ -838,17 +866,42 @@ Path edgePath = new Path(); Log.d(TAG, "璺竟娌� " + y + " 鍒嗘 " + line.size()); - edgePath.moveTo((float) (base_x + (map[line.get(0)][0] - min_x) * scale_x), (float) (base_y + (map[line.get(0)][1] - min_y) * scale_y)); - Log.d(TAG, String.format("0. X = %f Y = %f", map[line.get(0)][0], map[line.get(0)][1])); + int draw_status = 0; - for (int z = 1; z < line.size(); z++) { - edgePath.lineTo((float) (base_x + (map[line.get(z)][0] - min_x) * scale_x), (float) (base_y + (map[line.get(z)][1] - min_y) * scale_y)); - Log.d(TAG, String.format("%d. X = %f Y = %f", z, map[line.get(z)][0], map[line.get(z)][1])); + for (int z = 0; z < line.size(); z++) { + float scr_x = (float) (base_x + (map[line.get(z)][0] - min_x) * scale_x); + float scr_y = (float) (base_y + (map[line.get(z)][1] - min_y) * scale_y); + + if (scr_x >= 0 && scr_x <= bmp.getWidth() && scr_y >= 0 && scr_y <= bmp.getHeight()) { + if (draw_status == 0) { + edgePath.moveTo(scr_x, scr_y); + draw_status = 1; + } else if (draw_status == 1) { + edgePath.lineTo(scr_x, scr_y); + } + } else if (draw_status == 1) { + canvas2.drawPath(edgePath, paint); + draw_status = 0; + } } - Log.d(TAG, "璺竟娌�......"); - canvas2.drawPath(edgePath, paint); - Log.d(TAG, "璺竟娌垮畬姣�"); + if (draw_status == 1) { + canvas2.drawPath(edgePath, paint); + draw_status = 0; + } + +// edgePath.moveTo((float) (base_x + (map[line.get(0)][0] - min_x) * scale_x), (float) (base_y + (map[line.get(0)][1] - min_y) * scale_y)); +// +// Log.d(TAG, String.format("0. X = %f Y = %f", map[line.get(0)][0], map[line.get(0)][1])); +// +// for (int z = 1; z < line.size(); z++) { +// edgePath.lineTo((float) (base_x + (map[line.get(z)][0] - min_x) * scale_x), (float) (base_y + (map[line.get(z)][1] - min_y) * scale_y)); +// Log.d(TAG, String.format("%d. X = %f Y = %f", z, map[line.get(z)][0], map[line.get(z)][1])); +// } +// Log.d(TAG, "璺竟娌�......"); +// canvas2.drawPath(edgePath, paint); + + Log.d(TAG, "鍙宠矾杈规部瀹屾瘯"); } } @@ -881,12 +934,34 @@ List<Integer> points = seg.getLine(); + int draw_status = 0; - sepPath.moveTo((float) (base_x + (map[points.get(0)][0] - min_x) * scale_x), (float) (base_y + (map[points.get(0)][1] - min_y) * scale_y)); - for (int za = 1; za < points.size(); za++) { - sepPath.lineTo((float) (base_x + (map[points.get(za)][0] - min_x) * scale_x), (float) (base_y + (map[points.get(za)][1] - min_y) * scale_y)); + for (int za = 0; za < points.size(); za++) { + float scr_x = (float) (base_x + (map[points.get(za)][0] - min_x) * scale_x); + float scr_y = (float) (base_y + (map[points.get(za)][1] - min_y) * scale_y); + + if (scr_x >= 0 && scr_x <= bmp.getWidth() && scr_y >= 0 && scr_y <= bmp.getHeight()) { + if (draw_status == 0) { + sepPath.moveTo(scr_x, scr_y); + draw_status = 1; + } else if (draw_status == 1) { + sepPath.lineTo(scr_x, scr_y); + } + } else if (draw_status == 1) { + canvas2.drawPath(sepPath, paint); + draw_status = 0; + } } - canvas2.drawPath(sepPath, paint); + if (draw_status == 1) { + canvas2.drawPath(sepPath, paint); + draw_status = 0; + } + +// sepPath.moveTo((float) (base_x + (map[points.get(0)][0] - min_x) * scale_x), (float) (base_y + (map[points.get(0)][1] - min_y) * scale_y)); +// for (int za = 1; za < points.size(); za++) { +// sepPath.lineTo((float) (base_x + (map[points.get(za)][0] - min_x) * scale_x), (float) (base_y + (map[points.get(za)][1] - min_y) * scale_y)); +// } +// canvas2.drawPath(sepPath, paint); } } -- Gitblit v1.8.0