我有一个基于 Canvas 的视图,我正在尝试实现两个重叠功能
最后,我只想保存没有网格的用户绘图。
draw
方法中绘制这些。 public void draw(Canvas canvas) {
super.draw(canvas);
//Vertical lines
for(int wi=0; wi <= wdivisions+1; wi++){
float xpos = (screenw/wdivisions)*wi;
canvas.drawLine(xpos, 0, xpos, screenh, gridPaint);
}
//Horizontal lines
for(int hi=0; hi < hdivisions+1; hi++){
float ypos = (screenh/hdivisions)*hi;
canvas.drawLine(0, ypos, screenw, ypos, gridPaint);
}
}
onDraw
方法内更新。 @Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawBitmap(canvasBitmap, 0, 0, canvasPaint);
canvas.drawPath(drawPath, drawPaint);
}
我尝试了各种选项,例如 canvas.setBitMap
或 canvas.drawBitMap
,但我无法将背景网格与用户绘制的路径分开。
例如,以下代码为我提供了网格线和用户绘图的位图。
public Bitmap getBitmapFromView(View view)
{
Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
view.draw(canvas);
return bitmap;
}
关于如何解决这个问题的任何想法?