如何在 Android 中创建具有边和顶点的图形
How to create graph with edges and vertices in Android
我想创建图(带有边和顶点),以实现一个名为 3 色的问题。我只需要一些关于如何开始的指导,我应该使用多个视图并将每个视图绘制为一个圆圈,然后如何连接视图之间的线(边)?我应该一直使用像素还是有另一种方法,更简单的方法,因为在处理大图(超过 10 个顶点)时计算像素很复杂。
谢谢。
你要的叫drawing on Canvas
.
作为基本示例,您可以看到这段代码,它将创建 2 个顶点和连接它们的边:
public class MyView extends View {
private final Paint p;
private final Path path;
private final Point point1;
private final Point point2;
public MyView(Context context) {
super(context);
p = new Paint(Paint.ANTI_ALIAS_FLAG);
p.setStrokeWidth(10);
path = new Path();
point1 = new Point(200, 300);
point2 = new Point(700, 800);
}
@Override
protected void onDraw(Canvas canvas) {
// draw first vertex
p.setStyle(Paint.Style.FILL);
p.setColor(Color.GREEN);
canvas.drawCircle(point1.x, point1.y, 15, p);
// draw the edge
path.reset();
path.moveTo(point1.x, point1.y);
path.lineTo(point2.x, point2.y);
p.setStyle(Paint.Style.STROKE);
p.setColor(Color.CYAN);
canvas.drawPath(path, p);
// draw second vertex
p.setStyle(Paint.Style.FILL);
p.setColor(Color.BLUE);
canvas.drawCircle(point2.x, point2.y, 15, p);
}
}
这将导致:
我发现这个库是一个很好的来源:
https://github.com/LordVulkan/Graphs
我想创建图(带有边和顶点),以实现一个名为 3 色的问题。我只需要一些关于如何开始的指导,我应该使用多个视图并将每个视图绘制为一个圆圈,然后如何连接视图之间的线(边)?我应该一直使用像素还是有另一种方法,更简单的方法,因为在处理大图(超过 10 个顶点)时计算像素很复杂。
谢谢。
你要的叫drawing on Canvas
.
作为基本示例,您可以看到这段代码,它将创建 2 个顶点和连接它们的边:
public class MyView extends View {
private final Paint p;
private final Path path;
private final Point point1;
private final Point point2;
public MyView(Context context) {
super(context);
p = new Paint(Paint.ANTI_ALIAS_FLAG);
p.setStrokeWidth(10);
path = new Path();
point1 = new Point(200, 300);
point2 = new Point(700, 800);
}
@Override
protected void onDraw(Canvas canvas) {
// draw first vertex
p.setStyle(Paint.Style.FILL);
p.setColor(Color.GREEN);
canvas.drawCircle(point1.x, point1.y, 15, p);
// draw the edge
path.reset();
path.moveTo(point1.x, point1.y);
path.lineTo(point2.x, point2.y);
p.setStyle(Paint.Style.STROKE);
p.setColor(Color.CYAN);
canvas.drawPath(path, p);
// draw second vertex
p.setStyle(Paint.Style.FILL);
p.setColor(Color.BLUE);
canvas.drawCircle(point2.x, point2.y, 15, p);
}
}
这将导致:
我发现这个库是一个很好的来源: https://github.com/LordVulkan/Graphs