Android在画布中创建图层

时间:2012-05-18 06:54:42

标签: android paint android-canvas layer

我想学习如何在Android应用程序中创建图层(如在photoshop中)。我想实现一个基本的东西:当我在画布中添加一个图像时,例如,我想要能够绘制画布,但画面不能影响图形的线条。然后我需要将该图像保存在我的SD卡上。

有任何建议/意见/例子吗?我可以用什么来实现这个目标?

4 个答案:

答案 0 :(得分:1)

绘画的顺序使图层成为可能。 创建一些您绘制的对象堆栈,然后修改单个对象(在图层中绘制)或在此堆栈中移动它们(更改图层)。 使用相同的顺序创建要保存的图像。

答案 1 :(得分:0)

查看可以应用于Xfermode的各种PaintPorterDuff.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);