Android Java - 位图矩阵一起旋转和翻译

时间:2014-07-03 14:39:26

标签: java android matrix bitmap rotation

我正在尝试将我的位图从使用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,我的母系犹太人非常糟糕。

0 个答案:

没有答案