3

Canvas의 사용자 정의보기가 있습니다. 이 캔버스를 사용하여 비트 맵을 표시 한 다음 터치시 비트 맵을 그릴 수 있습니다. 비트 맵을로드하면 뷰 크기가 훨씬 커지고 전체 비트 맵 (카메라로 찍은 사진)을 볼 수 없습니다. 크기가 조정 된 비트 맵을 만든 다음 캔버스에 그리려고했지만 비트 맵 크기가 작고 캔버스가 전체 레이아웃 공간을 차지하고 있습니다. xml 레이아웃이 아니라 프로그래밍 방식으로이 뷰를 추가하고 있습니다. ,Android 사용자 정의보기 : 비트 맵을 감싸는 캔버스 크기 설정

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

그래서 : 내가보기에이 설정되어 있지만 작동하지 않은 :

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에 나는이 있습니다 제 질문은 : 비트 맵이 작아도 캔버스가 모든 레이아웃 공간을 차지하는 이유는 무엇입니까?

답변

1

사용이 코드는 높이

에보기

[편집]

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)에 따라

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

비트 맵 그리기 정점을 만드는 방법

+0

정점 대신 무엇을 넣어야합니까? 이 꼭지점을 만드는 방법? – nikmin

+0

정점 설명 편집 –

+0

이 괜찮습니다,하지만 하나의 문제가 있습니다. 뷰는 onCreate에서 만들어 지므로 이미지에 있어야하는 너비와 높이가 없습니다. 보기가 상대 레이아웃 내부에 추가되지만 onCreate에서 호출되기 때문에 너비와 높이를 가져올 수 없습니다. – nikmin

관련 문제