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