【问题标题】:Draw rectangle Over ImageVIew在 ImageVIew 上绘制矩形
【发布时间】:2013-10-28 07:01:28
【问题描述】:

我想实现一个裁剪功能,我想在 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 上没有绘制矩形..

【问题讨论】:

  • 你可以发布你的代码,你已经尝试过......你的意思是什么“它不起作用” ..崩溃?,不显示? ..显示错误??还是什么?
  • 这里你可以得到一些关于这个问题的提示stackoverflow.com/questions/19263989/…
  • @AmulyaKhare 请参阅编辑..
  • 上面的代码放在哪里?用什么方法?什么时候调用该方法..更多信息会有所帮助..
  • 在 setContentView 之后的 OnCreate() 中,包含 imageView 的布局

标签: java android


【解决方案1】:

您需要将绘图代码放在视图的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

【讨论】:

  • 更新的答案包括对super.onDraw()的调用
  • 如何设置rect的动态属性?
  • @AmulyaKhare 如何发送矩形框的动态属性?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-05
  • 2018-07-06
相关资源
最近更新 更多