6

我想实现一个裁剪功能,我想在 imageView 上有一个小矩形。矩形应该是静态的,我想移动图像并在矩形区域内裁剪图像。然后获取矩形内的图像作为裁剪图像。我曾尝试使用位图作为参数创建画布,但它不起作用。我已经尝试了很多来搜索如何做到这一点。但在任何地方都找不到。请帮忙..

Bitmap bitmap=BitmapFactory.decodeResource(this.getResources(), R.drawable.indoor);

    Bitmap mutBitmap = Bitmap.createBitmap(200, 400,bitmap.getConfig());

    Canvas canvas = new Canvas(mutBitmap);

            Paint paint = new Paint();
            paint.setColor(Color.BLACK);
            paint.setStyle(Paint.Style.FILL_AND_STROKE);
            paint.setStrokeWidth(10);
            float leftx = 20;
            float topy = 20;
            float rightx = 50;
            float bottomy = 100;
            canvas.drawRect(leftx, topy, rightx, bottomy, paint);

我正在使用上面的代码,但没有在 imageView 上绘制矩形。

4

1 回答 1

7

您需要将绘图代码放在onDraw()视图的方法中才能显示出来。您应该创建一个继承自 imageView 的自定义类,然后重写该onDraw()方法,如下所示:

class DrawView extends ImageView {

    public DrawView(Context context) {
        super(context);
    }

    DrawView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    DrawView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    public void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        Paint paint = new Paint();
        paint.setColor(Color.BLACK);
        paint.setStyle(Paint.Style.FILL_AND_STROKE);
        paint.setStrokeWidth(10);
        float leftx = 20;
        float topy = 20;
        float rightx = 50;
        float bottomy = 100;
        canvas.drawRect(leftx, topy, rightx, bottomy, paint);
    }
}

现在在您的布局中,包括DrawView而不是您当前的ImageView

于 2013-10-28T08:01:36.420 回答