我已经坚持这个问题八个小时了,所以我觉得是时候得到一些帮助了.
在我开始我的问题之前,我只会让我知道我已经通过这个网站和谷歌,我找到的答案都没有帮助.(这是一个,另一个,另一个.)
这是交易:我有一个扩展的类SurfaceView(让我们称之为MySurface)并覆盖其中的许多方法.通常情况下,它会绘制几个正方形和文本框,这一切都很好.一旦用户开始触摸,它就会转换为a Bitmap,然后绘制每个帧,直到用户释放.
这就是问题:我想实现这样一种功能:用户可以将两根手指放在屏幕上,捏缩放,也可以平移(但只能用两根手指向下).
我发现了一些缩放到缩放的实现,并通过以下方式将它们改编为我的Canvas对象MySurface:
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.save();
canvas.scale(mScaleVector.z, mScaleVector.z); // This is the scale factor as seen below
canvas.translate(mScaleVector.x, mScaleVector.y); // These are offset values from 0,0, both working fine
// Start draw code
// ...
// End draw code
canvas.restore();
}
private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener {
@Override
public boolean onScale(ScaleGestureDetector detector) {
float factor = detector.getScaleFactor();
if …Run Code Online (Sandbox Code Playgroud) 如果我有一个画布,我在上面绘制一个像这样的Bitmap:
canvas.drawBitmap(bmLargeImage, srcRect, destRect, paint);
Run Code Online (Sandbox Code Playgroud)
我缩放位图:
canvas.scale(1.5f, 1.5f, 450, 250);
Run Code Online (Sandbox Code Playgroud)
我希望在比例后获得位图的位置.如果比例前的位置是(0,0),那么在比例之后有一个偏移,我需要那个偏移..我怎么能得到它?
谢谢,抱歉这个简单的问题,新手在这里......