2011-04-13 3 views
2

내가 가지고있는 그래픽 문제로 도움을받을 수있는 사람이 누구입니까? 이 코드는 모든에 setPolyToPoly을 적용하지 않습니다 ..setPolyToPoly가 적용되지 않았습니다.

final Camera camera = mCamera; 
final Matrix matrix = t.getMatrix(); 

camera.save(); 
camera.translate(x, y, z); 
camera.getMatrix(matrix); 
camera.restore(); 

matrix.setPolyToPoly(sourceArr, 0, destArr, 0, sourceArr.length >> 1); 
matrix.preTranslate(-0, -height); 
matrix.postTranslate(0, height); 

답변

4

이 샘플은 전적으로 귀하의 질문에 적합하지 않지만에 넣을 수 있습니다 .. 그것은 카메라의 회전을하지 아닌 polyToPoly 변환은 .. 나는 이유를 이해 해달라고 올바른 방향. 이 샘플에서는 매트릭스가 원근감에 배치되는 비트 맵에 적용됩니다. 내가 스 니펫과 비교하면 폴리 폴리를 설정하지만 카메라에는 적용되지 않습니다.

Bitmap bitmap2 = Bitmap.createBitmap(200, 200, Bitmap.Config.ARGB_8888); 
    Canvas canvas2 = new Canvas(bitmap2);  
    canvas2.drawColor(Color.WHITE); 
    Paint rectPaint2 = new Paint(); 
    rectPaint2.setColor(Color.GREEN); 
    canvas2.drawRect(20, 20, 180, 180, rectPaint2); 
    Matrix matrix2 = new Matrix(); 
    float deform2 = 20f; 
    float[] src2 = new float[] { 0, 0, bitmap2.getWidth(), 0, bitmap2.getWidth(), bitmap2.getHeight(), 0, bitmap2.getHeight() }; 
    float[] dst2 = new float[] { 0, 0, bitmap2.getWidth() - deform2, deform2, bitmap2.getWidth() - deform2, bitmap2.getHeight() - deform2, 0, bitmap2.getHeight() }; 
    matrix2.setPolyToPoly(src2, 0, dst2, 0, src2.length >> 1); 
    Bitmap bMatrix2= Bitmap.createBitmap(bitmap2, 0, 0, bitmap2.getWidth(), bitmap2.getHeight(), matrix2, true); 

    ImageView ivSecond = (ImageView) findViewById(R.id.ivSecond); 
    ivSecond.setImageBitmap(bMatrix2); 
+0

왜 "src2.length >> 1"이 있습니까? 그것은 정확히 배열의 길이와 일치해야하지 않습니까? –

+0

pointCount \t 사용할 쌍/점 수입니다. [0..4]이어야합니다. 쌍 수이며 항목 수는 아닙니다. – Tatarize

관련 문제