我正在尝试将我的位图从使用rectF转换转换为使用矩阵旋转和转换。我觉得我已经尝试了旋转和翻译的pre,set,post的所有组合。这是我的代码示例
Matrix m;
@Override
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawBitmap(bitmap, m, null);
}
onTouchEvent(MotionEvent event)
{
m.setRotate(rotation, bitmap.getWidth()/2, bitmap.getHeight()/2); //rotation points to your finger
if (fingerx1 > bitmapX) {
xspeed = xspeed + accel;
}
if (fingerx1 < bitmapX) {
xspeed = xspeed - accel;
}
if (fingery1 < bitmapY) {
yspeed = yspeed - accel;
}
if (fingery1 > bitmapY) {
yspeed = yspeed + accel;
}
}
private Runnable runny = new Runnable() {
public void run() {
m.postTranslate(xspeed, yspeed);
handler.postDelay(this, 50);
}
};
不是最终的代码,因为我不知道在这些情况下使用哪个pre,set,post。我觉得这可能是解决方案(setRotate,postTranslate)。
使用这种组合,位图看起来像是尝试但无法翻译。
当我尝试使用setTranslate(bitmapX + xspeed,bitmapY + yspeed)和postRotate时,它给了我正确的翻译但疯狂的轮换。使用setRotate,setTranslate给了我疯狂的故障。添加预翻译和预旋转混合物让我头疼。
TL; DR:呃。
编辑:
bitmapX = playerValues[Matrix.MTRANS_X];
bitmapY = playerValues[Matrix.MTRANS_Y];
在一起尝试postRotate和postTranslate之后,我看到我的位图首先围绕它的中心旋转,然后它移出0,0位置并继续围绕0,0 center.x,center.y位置旋转。
基本上我需要修复旋转的中心x,y,使它们随位图的位置动态变化。
谢谢pskink,我的母系犹太人非常糟糕。