android – 手绘图像裁剪在位图区域内绘制

前端之家收集整理的这篇文章主要介绍了android – 手绘图像裁剪在位图区域内绘制前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
试图实现图像的徒手裁剪,这样我就可以在图像上绘图了.但它超出了位图区域.我只想限制用户只能在位图区域内绘制,检查下面的屏幕截图.

我正在尝试实现像Photoshop lasso tool这样的功能.

它在视图区域外绘制,产生不正确的输出.

产量

码@

的onDraw

public void onDraw(Canvas canvas) {

        final Rect rect = new Rect(0,bitmap.getWidth(),bitmap.getHeight());
        canvas.drawBitmap(bitmap,rect,null);
        // RectF r = new RectF();
        // Matrix matrix = new Matrix();
        // matrix.mapRect(r);
        // Log.i(TAG,"Rect " + r.left + " " + r.top + " " + r.right + " " +
        // r.bottom + " ");
        // canvas.clipRect(r.left,r.top,r.right,r.bottom);

        Path path = new Path();
        boolean first = true;

        for (int i = 0; i < points.size(); i += 2) {
            Point point = points.get(i);
            if (first) {
                first = false;
                path.moveTo(point.x,point.y);
            } else if (i < points.size() - 1) {
                Point next = points.get(i + 1);
                path.quadTo(point.x,point.y,next.x,next.y);
            } else {
                mlastpoint = points.get(i);
                path.lineTo(point.x,point.y);
            }
        }
        canvas.drawPath(path,paint);
    }

onCrop

Bitmap resultingImage = Bitmap.createBitmap(widthOfscreen,heightOfScreen,bitmap1.getConfig());

        Canvas canvas = new Canvas(resultingImage);

        Paint paint = new Paint();
        paint.setAntiAlias(true);
        Path path = new Path();
        for (int i = 0; i < SomeView.points.size(); i++) {
            path.lineTo(SomeView.points.get(i).x,SomeView.points.get(i).y);
        }
        // path.lineTo(150,0);
        // path.lineTo(230,120);
        // path.lineTo(70,120);
        // path.lineTo(150,0);

        canvas.drawPath(path,paint);
        if(crop){
            paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));

        }else{
            paint.setXfermode(new PorterDuffXfermode(Mode.SRC_OUT));
        }

建议我实现我的目标.

解决方法

有一种方法可以实现你的目标..

按照以下步骤:

1)使一个图像像裁剪图像的内部部分应该是透明的,外部部分应该是画布下面的背景图像.

2)在画布上绘制该图像.

3)在画布上绘制任何内容,并将该图像绘制在画布顶部.

图片

猜你在找的Android相关文章