[英]Draw bitmap on current clip in canvas with border (Paint)
我正在通过编写游戏来学习 Android 并且图形 API 有问题。
我想将图像绘制成路径的形状,然后在路径上添加边框。 我能够使用 Path 剪辑图像,但找不到在其上添加边框的方法。 我认为这很简单,因为 API 在 Canvas.draw* 方法上支持 Paint object。
更新
在原始问题中,我的路径包含两个矩形,@christopher-souvey 回答正确。 但是,在处理添加另一个 clipPath() 方法时,我遇到了另一个问题。
我通过在 Path 中再添加一个圆圈来更新之前的代码。 这是我的新代码:
Bitmap srcImage = BitmapFactory.decodeStream(getAssets().open("panda.jpg"));
Bitmap bitmapResult = Bitmap.createBitmap(srcImage.getWidth(), srcImage.getHeight(), Bitmap.Config.ARGB_8888);
Path path = new Path();
// This is my border
Paint paint = new Paint();
paint.setStyle(Style.STROKE);
paint.setColor(Color.RED);
paint.setStrokeWidth(2);
paint.setAntiAlias(true);
Canvas canvas = new Canvas(bitmapResult);
// Overlay two rectangles
path.addRect(10, 10, 70, 70, Path.Direction.CCW);
path.addRect(40, 40, 120, 120, Path.Direction.CCW);
canvas.drawPath(path , paint);
canvas.clipPath(path, Region.Op.INTERSECT);
path.reset();
path.addCircle(40, 80, 20, Path.Direction.CCW);
canvas.drawPath(path , paint);
canvas.clipPath(path, Region.Op.DIFFERENCE);
// The image is drawn within the area of two rectangles and a circle
// Although I suppose that puting Paint object into drawBitmap() method will add a red border on result image but it doesn't work
canvas.drawBitmap(srcImage, 0, 0, paint);
((ImageView)this.findViewById(R.id.imageView1)).setImageBitmap(bitmapResult);
这是我的代码的结果: http://i.stack.imgur.com/8j2Kg.png
这就是我所期望的: http://i.stack.imgur.com/iKhIr.png
我想念什么让它工作吗?
尝试在 drawBitmap 之后使用canvas.drawPath(path, paint)
您可能必须在剪辑之前放入canvas.save
和canvas.restore
中风是否发生在 drawPath 内部或外部之前.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.