我有一个自定义视图,其中包含Canvas
。我正在使用此画布在其上显示位图,然后我可以在触摸时绘制位图。当我加载位图时,它比视图大小大得多,我看不到整个位图(它是用相机拍摄的照片)。我尝试创建缩放的位图,然后在画布上绘制它,但在这种情况下,位图更小,画布使整个布局空间可用。我是以编程方式添加此视图,而不是在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);
}
所以,我的问题是:为什么画布占用所有的布局空间,即使位图比它小?
答案 0 :(得分: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更改为高度