Android : 如何保留所有图纸?
Android : How can I keep all drawings?
我想在android中画一些线条。我使用 SampleView class 并且它是 onDraw,像这样:
private class SampleView extends View {
public SampleView(Context context) {
super(context);
setFocusable(true);
}
@Override
protected void onDraw(Canvas canvas) {
p.setAntiAlias(true);
p.setColor(Color.RED);
p.setStyle(Paint.Style.STROKE);
p.setStrokeWidth(5);
canvas.drawLine(x0, y0, x1, y1, p);
}
}
每次调用 sv.invalidate() 时,我的 x0,x1,y0,y1 都会发生变化。每次绘制新线时,我之前的线被清除 ...但我想保留所有线。我该怎么做?
您应该跟踪路径组件中的线条。当您要绘制一条新线时,添加到路径中。然后,您可以在 onDraw() 中绘制路径,或者在出于任何原因需要时清除路径。
一个例子可能是这样的:
public void onDraw(Canvas canvas)
{
Path path = new Path();
boolean isFirstPoint = true;
for(Point point : points)
{
if(isFirstPoint)
{
isFirstPoint = false;
path.moveTo(point.x, point.y);
}
else
{
path.lineTo(point.x, point.y);
}
}
canvas.drawPath(path, paint);
}
但是,当然,有很多方法可以做到这一点。 onDraw 方法意味着经常更新并绘制您告诉它的内容,您必须保持状态。
我想在android中画一些线条。我使用 SampleView class 并且它是 onDraw,像这样:
private class SampleView extends View {
public SampleView(Context context) {
super(context);
setFocusable(true);
}
@Override
protected void onDraw(Canvas canvas) {
p.setAntiAlias(true);
p.setColor(Color.RED);
p.setStyle(Paint.Style.STROKE);
p.setStrokeWidth(5);
canvas.drawLine(x0, y0, x1, y1, p);
}
}
每次调用 sv.invalidate() 时,我的 x0,x1,y0,y1 都会发生变化。每次绘制新线时,我之前的线被清除 ...但我想保留所有线。我该怎么做?
您应该跟踪路径组件中的线条。当您要绘制一条新线时,添加到路径中。然后,您可以在 onDraw() 中绘制路径,或者在出于任何原因需要时清除路径。
一个例子可能是这样的:
public void onDraw(Canvas canvas)
{
Path path = new Path();
boolean isFirstPoint = true;
for(Point point : points)
{
if(isFirstPoint)
{
isFirstPoint = false;
path.moveTo(point.x, point.y);
}
else
{
path.lineTo(point.x, point.y);
}
}
canvas.drawPath(path, paint);
}
但是,当然,有很多方法可以做到这一点。 onDraw 方法意味着经常更新并绘制您告诉它的内容,您必须保持状态。