gpt4 book ai didi

java - 在 ImageVIew 上绘制矩形

转载 作者:太空宇宙 更新时间:2023-11-03 12:56:20 25 4
gpt4 key购买 nike

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

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 上绘制矩形..

最佳答案

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

关于java - 在 ImageVIew 上绘制矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19628797/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com