5

我有一个自定义视图Canvas。我正在使用此画布在其上显示位图,然后我可以在触摸时绘制位图。当我加载位图时,它比视图大小大很多,我看不到整个位图(这是用相机拍摄的照片)。我尝试创建缩放位图,然后将其绘制在画布上,但在这种情况下,位图较小,并且画布占用了整个可用的布局空间。我以编程方式添加此视图,而不是 int xml 布局。我已将此设置为视图但不起作用:

fdvImage = new ImageEditingView(this, b);
RelativeLayout.LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
lp.addRule(RelativeLayout.CENTER_IN_PARENT, 1);
fdvImage.setLayoutParams(lp);

这是我的视图构造函数:

public ImageEditingView(Context c, Bitmap b) {
    super(c);
    this.setMinimumHeight(0);

    mBitmap = Bitmap.createScaledBitmap(b, b.getWidth()/2, b.getHeight()/2, true);
    mCanvas = new Canvas(mBitmap);
}

onDraw我有这个:

protected void onDraw(Canvas canvas) {
    canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint);
}

所以,我的问题是:为什么即使位图更小,画布也会占用所有布局空间?

4

1 回答 1

1

使用此代码绘制位图

canvas.drawBitmapMesh(yourBitmap, 1, 1,vertices, 0, null, 0,
                                        paint);

根据您的视图制作顶点

[编辑]

    float[] vertices = new float[8];
 vertices[0]=0; vertices[1]=0; vertices[2]=100; vertices[3]=0;
 vertices[4]=0;vertices[5]=200; vertices[6]=100; vertices[7]=200;

将 100 更改为您的宽度,将 200 更改为高度

于 2013-04-09T11:18:30.547 回答