我想学习如何在Android应用程序中创建图层(如在photoshop中)。我想实现一个基本的东西:当我在画布中添加一个图像时,例如,我想要能够绘制画布,但画面不能影响图形的线条。然后我需要将该图像保存在我的SD卡上。
有任何建议/意见/例子吗?我可以用什么来实现这个目标?
答案 0 :(得分:1)
绘画的顺序使图层成为可能。 创建一些您绘制的对象堆栈,然后修改单个对象(在图层中绘制)或在此堆栈中移动它们(更改图层)。 使用相同的顺序创建要保存的图像。
答案 1 :(得分:0)
查看可以应用于Xfermode
的各种Paint
。 PorterDuff.Mode
提供了一些像Photoshop一样的选项,例如,屏幕和倍增,变亮和变暗。 AvoidXferMode
可能会更符合您的需求。
答案 2 :(得分:0)
您可以在FrameLayout中构建图层。您可能需要一些技巧来确保将触摸事件传递到正确的图层。
一旦你有自己的想法组成你的视图,你可以mFrameLayout.onDraw(Canvas c)将整个事物绘制到画布上。
本文提供了有关如何将视图组转换为jpeg的一些信息 Image on canvas to JPEG file
答案 3 :(得分:0)
画布层。
Bitmap bitmap=Bitmap.createBitmap(500,500, Bitmap.Config.ARGB_8888);
Canvas canvas=new Canvas(bitmap);
Paint paint_outer=new Paint();
paint_outer.setColor(Color.parseColor("#DEB887"));
paint_outer.setStrokeWidth(140);
paint_outer.setStyle(Paint.Style.STROKE);
canvas.drawCircle(250,250,150,paint_outer);
Paint paint_inner=new Paint();
ComposePathEffect pathEffect=new ComposePathEffect(new CornerPathEffect(40),new DiscretePathEffect(60f,25f));
paint_inner.setPathEffect(pathEffect);
paint_inner.setColor(Color.parseColor("#8B4513"));
paint_inner.setStrokeWidth(90);
paint_inner.setStyle(Paint.Style.STROKE);
canvas.drawCircle(250,250,150,paint_inner);
iv.setImageBitmap(bitmap);