是否有可能绘制2个Rect并摘录第一个?

时间:2011-08-04 16:13:38

标签: android draw rect

编辑: - >大家好! < -

我正在制作一个“基于图像的应用程序”! 我想做的是:

  1. 拍照(完成)
  2. 使用叠加预览照片!
  3. 裁剪照片
  4. 所以问题是叠加!我有一个SurfaceView,里面拍摄照片,现在我想看到像窗口(rect2)和alpha覆盖(rect1某种黑色,alpha 50%)的正方形。 是否可以绘制2个Rect,一个是全尺寸(rect1),另一个是较小尺寸(rect2),然后从第一个Rect中切出较小的?

    ______________
    |Rect1       |
    |   ______   |
    |  |Rect2 |  |
    |  |      |  |
    |  |______|  |
    |____________| 
    

    我使用的是Android 2.1。我知道在2.3.3中有一个BitmapRegionDecoder!这件事几乎可以做我想做的事情。 此刻我画了4个Rect并在窗口的中间留下一个小洞,但这就像我的A **中的一个痛苦就是移动这个sqare并调整它的大小。

    编辑:我想要做的就像在Facebook上一样,如果你上传一张图片为Profileimage,你必须移动并调整图像上的方块,当你发布一些东西时左边的“头像” - 图像...

    所以我希望一切都清楚,你可以帮助我!

    由于

2 个答案:

答案 0 :(得分:0)

您可以使用FrameLayout(如容器)以及定位SurfaceView(您的rect)。 使用removeView,您可以通过使用findviewbyid捕获来删除所需的矩形。

我希望这对你有所帮助。再见

答案 1 :(得分:0)

public class yourActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(new yourCanvas(this));
}

class yourCanvas extends View {
    public Panel(Context context) {
        super(context);
    }

    @Override
    public void onDraw(Canvas canvas) {
        Bitmap yourBitmap = getYourBitmap();
        canvas.drawBitmap(_yourBitmap, 50, 50, null);
        canvas.drawRect(0,0,canvas.getWidth(),50,null); //top rect
        canvas.drawRect(0,0,50,canvas.getHeight(),null); //left rect
        canvas.drawRect(50+yourBitmap.getWidth(),0,canvas.getWidth(),canvas.getHeight(),null); //right rect
        canvas.drawRect(0,50+yourBitmap.getHeight(),canvas.getWidth(),canvas.getHeight(),null); //Bottom rect
    }
}

}


上一个回答如果你只是想为你的imageview创建一个边框

我想提出以下建议:

  1. ImageView的位图设置为位图
  2. 将背景颜色设置为您希望外部矩形
  3. 的颜色
  4. 设置填充参数以获得所需尺寸