getPixel正在處理您的unzoomed位圖。 我假設X和Y來自觸摸事件,並且與視圖有關。 我在你的鏈接中看到示例正在使用兩個Rect對象來調整大小。
@Override
protected void onDraw(Canvas canvas) {
if (mBitmap != null && mState != null) {
canvas.drawBitmap(mBitmap, mRectSrc, mRectDst, mPaint);
}
}
我想這也是你是如何做到的。 簡單地將您的座標與縮放比例分開將不起作用,因爲X和Y是相對於您的視圖而不是RectDst。
我通常使用Matrix對象來進行縮放,因爲它很容易重現,反轉等...... 例如,如果使用Matrix進行了縮放,您可以將其反轉,將其設爲X ,Y,並返回相對於位圖的原始座標。
但是你有辦法做到這一點,無論如何,通過使用2個Rects計算矩陣:
//Recreate the Matrix using the 2 Rects
Matrix m = new Matrix()
m.setRectToRect(mRectDst, mRectSrc, false);
//Transform the coordinates back to the original plan
float[] src = {x,y};
float[] dst = new float[2];
m.mapPoints(src, dst);
myBitmap.getPixel(dst[0], dst[1]);
我沒有測試它,但它應該工作,或至少幫助您找到您的解決方案。
嘿,我面臨同樣的問題。請發帖如果你有任何問題的答案! – 2017-07-10 09:37:13