Android 将画布用于手势覆盖视图
我有一个GestureOverlayView,用户可以在上面绘制手势笔划,我想将这些笔划保存在PNG文件中。 我已经尝试了Android 将画布用于手势覆盖视图,android,bitmap,gesture,Android,Bitmap,Gesture,我有一个GestureOverlayView,用户可以在上面绘制手势笔划,我想将这些笔划保存在PNG文件中。 我已经尝试了公共void draw(Canvas Canvas),我得到了一个PNG文件作为我下面代码的输出,但是我没有得到任何笔划,有人能帮我吗。。。。 提前谢谢 我的代码 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
公共void draw(Canvas Canvas)
,我得到了一个PNG文件作为我下面代码的输出,但是我没有得到任何笔划,有人能帮我吗。。。。
提前谢谢
我的代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.create_gesture);
bitmap= Bitmap.createBitmap(12, 12, Bitmap.Config.RGB_565);
can=new Canvas(bitmap);
GestureOverlayView overlay = (GestureOverlayView) findViewById(R.id.gestures_overlay);
overlay.addOnGestureListener(new GesturesProcessor());
overlay.draw(can);
}
将笔划另存为PNG的代码
bm=mGesture.toBitmap(313, 343, 8,3);
can.drawBitmap(bm, 0, 0, null);
File file = new File(Environment.getExternalStorageDirectory()
+ File.separator+"Strokes");
out = new FileOutputStream(file);
bm.compress(Bitmap.CompressFormat.PNG,100, out);
Toast.makeText(this, "PNG file Created "+mGesture, Toast.LENGTH_LONG).show();
按照J博士的规定进行修改
Paint paint=new Paint();
Bitmap bitmap=Bitmap.createBitmap(412, 412, Bitmap.Config.ARGB_4444);
Canvas can=new Canvas(bitmap);
Path path = new Path();
paint.setColor(255);
。
.
.
}您需要直接从用户那里捕获手势,Draw提供给您的画布(Canvas Canvas)是供您绘制的,它不包含供您从中捕获的数据 你应使用:
public Path getGesturePath (Path path)
然后,如果要保存它,请使用画布的drawPath
感谢您的回复…我已经做了您在代码中提到的更改,但仍然得到了空的png文件,我的问题空间中有修改过的代码。您需要从侦听器的GestureOverlayView中获取路径,就像从中继续使用覆盖并调用(侦听器的)覆盖。getGesturePath(路径),然后,您可以使用路径在画布上绘制以保存手势。我已经做了更改。您的意思是(上面的修改)应该可以工作,但是如果保存文件的时间太长,UI可能会死掉。您需要创建一个AsyncTask,并让它在使用Path对象运行时处理在请求时保存文件的问题。关于UI线程和异步任务的说明
public Path getGesturePath (Path path)
. It can be drawn with canvas.drawPath(path, paint), either filled or stroked (based on the paint's Style), or it can be used for clipping or to draw text on a path.