java canvas 缩放图片_android – onScale和Canvas – 如何在缩放图像后调整原点?

我有一个非常简单的测试应用程序,其自定义组件

MyView.java – 显示可滚动和可缩放的图像(代表类似拼字游戏的文字游戏中的棋盘):

1)在我的比例监听器中,我调整比例因子:

public boolean onScale(ScaleGestureDetector detector) {

mScale *= detector.getScaleFactor();

// XXX how to adjust mOffsetX and mOffsetY ? XXX

constrainZoom();

constrainOffsets();

invalidate();

return true;

}

2)然后在我的自定义组件的绘图方法中,我应用了翻译和比例因子:

protected void onDraw(Canvas canvas) {

super.onDraw(canvas);

canvas.translate(mOffsetX, mOffsetY);

canvas.scale(mScale, mScale);

gameBoard.setBounds(

0,

0,

gameBoard.getIntrinsicWidth(),

gameBoard.getIntrinsicHeight()

);

gameBoard.draw(canvas);

}

不幸的是,用捏手势缩放时似乎有一个小错误 –

我可以看到,缩放后缩放和边界的大小正确,但图像的偏移不是.

当捏合手势的焦点远离屏幕的0点时,问题变得更糟.

用文字描述这个问题有点困难,但是当您查看my test project from GitHub时,您会立即看到它(并且您可以随时双击以重置偏移和比例).

这可能是解决它的标准方法的常见问题,但我还没有找到它.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值