1

我想创建裁剪位图功能并参考了Android: Free Croping of Image但这会将位图设置在另一个 imageView 中。现在我知道我可以在画布中设置裁剪位图但我想保留原始位图并想做在 onDraw() 中进行裁剪,而不是制作不同的位图,然后将其设置在画布中。我尝试在 onDraw 中实现以下代码,但没有裁剪,位图保持原样。请帮助,以便我可以在其中编写代码CustomView 的 onDraw() 方法。

compositeImageView = (ImageView) findViewById(R.id.our_imageview);

        Bitmap bitmap2 = BitmapFactory.decodeResource(getResources(),
                R.drawable.gallery_12);

        Bitmap resultingImage = Bitmap.createBitmap(widthOfscreen,
                heightOfScreen, bitmap2.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);
        }
        canvas.drawPath(path, paint);
            paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));

        canvas.drawBitmap(bitmap2, 0, 0, paint);
        compositeImageView.setImageBitmap(resultingImage);

我的 onDraw() 方法

@Override
    protected void onDraw(Canvas canvas)
    {
            Bitmap bitmap1 = bitmap.copy(bitmap.getConfig(), true);

            canvas.drawBitmap(bitmap1, 0,0, null);
            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);
            }
            canvas.drawPath(path, paint);

            paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));

            canvas.drawBitmap(bitmap,0, 0, paint);

    }
4

0 回答 0