Android在画布中创建图层

问题描述 投票:11回答:4

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

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

android paint android-canvas layer
4个回答
1
投票

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


0
投票

看看你可以应用于Xfermode的各种Paints。 PorterDuff.Mode提供了一些像Photoshop一样的选项,例如,屏幕和倍增,变亮和变暗。然而,AvoidXferMode可能更适合您的需求。


0
投票

您可以在FrameLayout中构建图层。您可能需要一些技巧来确保将触摸事件传递到正确的图层。

一旦你有android组合你的视图你喜欢,你可以FrameLayout.onDraw(Canvas c)将整个事物绘制到画布上。

本文提供了有关如何将您的视图组转换为jpeg Image on canvas to JPEG file的一些信息


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);
© www.soinside.com 2019 - 2024. All rights reserved.