Rob*_*ood 9 android crop bitmap android-canvas
试图实现图像的徒手裁剪,所以我能够在图像上绘图.但它超出了位图区域.我只想限制用户只能在位图区域内绘制,检查下面的屏幕截图.
我正在尝试实现像Photoshop套索工具这样的功能.
它在视图区域外绘制,产生不正确的输出.
产量
码@
的onDraw
public void onDraw(Canvas canvas) {
final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
canvas.drawBitmap(bitmap, rect, rect, null);
// RectF r = new RectF();
// Matrix matrix = new Matrix();
// matrix.mapRect(r);
// Log.i(TAG, "Rect " + r.left + " " + r.top + " " + r.right + " " +
// r.bottom + " ");
// canvas.clipRect(r.left, r.top, r.right, r.bottom);
Path path = new Path();
boolean first = true;
for (int i = 0; i < points.size(); i += 2) {
Point point = points.get(i);
if (first) {
first = false;
path.moveTo(point.x, point.y);
} else if (i < points.size() - 1) {
Point next = points.get(i + 1);
path.quadTo(point.x, point.y, next.x, next.y);
} else {
mlastpoint = points.get(i);
path.lineTo(point.x, point.y);
}
}
canvas.drawPath(path, paint);
}
Run Code Online (Sandbox Code Playgroud)
onCrop
Bitmap resultingImage = Bitmap.createBitmap(widthOfscreen,heightOfScreen, bitmap1.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);
}
// path.lineTo(150, 0);
// path.lineTo(230, 120);
// path.lineTo(70, 120);
// path.lineTo(150, 0);
canvas.drawPath(path, paint);
if(crop){
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
}else{
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_OUT));
}
Run Code Online (Sandbox Code Playgroud)
建议我实现我的目标.
有一种方法可以实现您的目标..
请按照以下步骤操作:
1)制作一张图像,就像裁剪图像的内部部分应该是透明的,外部部分应该是图像下方画布检查的背景。
2)将该图像绘制在画布上。
3)在画布上绘制任何内容,然后在画布上再次绘制该图像。
图像:
归档时间: |
|
查看次数: |
3115 次 |
最近记录: |