首页 > 解决方案 > 如何让位图移动到中心?

问题描述

我想Bitmap自动向我的中心移动canvas。我尝试了以下代码,但它没有按我的意愿工作 它经常发生位图不直接到达中心 或者,位图可能到达屏幕的两个中心轴之一,然后到中心

canvasWidth = canvas.getWidth();
canvasHeight = canvas.getHeight();
if(mBitmapX < canvasWidth/2){
    mBitmapX = mBitmapX + mBitmapSpeed;
}else{
    mBitmapX = mBitmapX - mBitmapSpeed;
}
if(mBitmapY < canvasHeight/2){
    mBitmapY = mBitmapY + mBitmapSpeed;
}else{
    mBitmapY = mBitmapY - mBitmapSpeed;
}

标签: java

解决方案


这应该使您从任何起始位置向中心点移动一步距离 mBitmapSpeed:

double x = /* canvas.getX() + */ canvas.getWidth() / 2 - mBitmapX;
double y = /* canvas.getY() + */ canvas.getHeight() / 2 - mBitmapY;
double dist = Math.sqrt(x*x + y*y);
double step = Math.min(dist, mBitmapSpeed);
if (dist != 0) {
    mBitmapX += x * step / dist;
    mBitmapY += y * step / dist;
}

请注意,这假设您的画布坐标从 (0,0) 开始。如果他们不这样做,您需要将等效调用添加到注释掉的位。


推荐阅读