2016-04-07 18 views
1

Hi kullanarak:Yakınlaştırma imageview Bu kod ile benim ImageView içinde görüntü üzerinde belirli bir noktayı yakınlaştırmak için çalışıyorum matris

private void calculateAndZoom() { 

    matrix.set(getImageMatrix()); 
    printMatrixValues(getImageMatrix()); 

    float startpointY = (start_y_rel/ template_y_rel) * getHeight() * scale; 
    float startpointX = (start_x_rel/template_x_rel)* getWidth() * scale; 

    PrintDevMessage.print("Width: " + getWidth() + " Height: " + getHeight()); 

    matrix.setScale(1,1,0,0); 
    matrix.postScale(scale, scale, startpointX, startpointY); 

    this.setScaleType(ImageView.ScaleType.MATRIX); 
    this.setImageMatrix(matrix); 

    printMatrixValues(getImageMatrix()); 
} 

start_y_rel ve start_x_rel template_y_rel göre puan ve template_x_rel

Herhangi bir önceki yakınlaştırmayı kaldırmak ve ilk konuma geçmek için matrix.setScale (1,1,0,0) kullanıyorum.

Bu kod, ölçek 3 ile çalışır, ancak başka bir ölçek denediğimde, yanlış konuma zoom yapar.

private void calculateAndZoom() { 

    float cScale=getMatrixValue(getImageMatrix(),Matrix.MSCALE_X); 

    float newScale = ((float)1.0/cScale)*scale; 

    matrix.set(getImageMatrix()); 
    printMatrixValues(matrix); 

    float startpointY = ((start_y_rel/template_y_rel) * getHeight()); 
    float startpointX = ((start_x_rel/template_x_rel) * getWidth()); 

    PrintDevMessage.print("Width: " + getWidth() + " Height: " + getHeight()); 

    matrix.postScale(newScale, newScale, startpointX, startpointY); 

    this.setScaleType(ImageView.ScaleType.MATRIX); 
    this.setImageMatrix(matrix); 

    printMatrixValues(getImageMatrix()); 

} 

Ben ekrandan daha büyük ve ImageView yerleştirildiğinde ölçek değiştiğinde olmak resmin dikkate almadılar: Baş-çizilmemesi 3 gün sonra ben çözümü buldum böylece

cevap

0

Ok. Bu yüzden eski ölçekle istediğim ölçeği şu şekilde yeniden hesaplamak zorunda kaldım:

float newScale = ((float)1.0/cScale)*scale;