将可裁剪绘图对象裁剪为正方形。

4

我有一个可调整大小的drawable,已将其缩放到所需的高度(25dp),宽度按比例缩放。但是,我想要一张宽度也为25dp的正方形图片。然而,我不想扭曲图像,因此我想剪裁右侧和左侧相等部分的drawable,以给我中心的25dpx25dp。这个可行吗?如何实现?我已经尝试了两个小时,我准备放弃了...

1个回答

3

Bitmap target= Bitmap.createBitmap(width, height,Config.ARGB_8888);
Canvas canvas = new Canvas(target) 
// 根据源图片的宽高比例计算出需要缩放的比例
float hScale = width/(float)source.getWidth();
float vScale = height/(float)source.getHeight();
float scale = Math.min(hScale, vScale);
// 构造一个矩阵,用于对图片进行缩放和平移操作
Matrix matrix = new Matrix();
matrix.setScale(scale, scale);
matrix.postTranslate(width/2 - source.getWidth()/2 * scale, height/2 - source.getHeight()/2 * scale);
// 设置画布颜色为黑色
canvas.drawColor(Color.BLACK);
// 在画布上绘制缩放后的图片
canvas.drawBitmap(source, matrix, new Paint());


我对在画布上绘图非常非常新手。一旦绘制完成,我该如何将其添加到我的布局中? - user1118042
如果您正在使用ImageView,则imageView.setImageBitmap(target);请参阅http://developer.android.com/reference/android/widget/ImageView.html#setImageBitmap(android.graphics.Bitmap)。 - Sudar Nimalan
我能否将它作为复合可绘制对象添加到TextView中呢?非常感谢您已经给予我的帮助! - user1118042
如果你想使用setBackgroundDrawable(),你可以使用setBackgroundDrawable(new BitmapDrawable(target)); - Sudar Nimalan
我也尝试了你的代码,但是无法绘制画布,问题出在哪里? - Zala Janaksinh
我也尝试过这个。但是我做不来。我在stackoverflow上发布了我的问题http://stackoverflow.com/questions/11840811/how-to-get-select-area-which-cover-by-canvas-in-android 但是我无法解决它。请给我一些解决方法。 - Zala Janaksinh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接