1

ピボット ポイントからキャンバスを回転させるためにこれを適用すると、正しく動作しません。回転ポイントが変わっていないように見えます。私もマトリックスを使用してこれを適用しましたが、その時点ではうまく機能していません。キャンバスで回転しています。ビットマップを回転させたいのですが、UI に他の画像もいくつかあります。回転する必要があるビットマップを描画する直前に、キャンバスを回転させています。

@Override protected void onDraw(Canvas canvas) 
{ 
    /* * draw the background */ 
    canvas.drawBitmap(mWood, 0, 0, null); 
    /* * compute the new position of our object, based on accelerometer  */ 
    final ParticleSystem particleSystem = mParticleSystem; 
    final long now = mSensorTimeStamp + (System.nanoTime() - mCpuTimeStamp); 
    final float sx = mSensorX; 
    final float sy = mSensorY; 
    particleSystem.update(sx, sy, now); 
    final Bitmap bitmap = mBitmap; 
    final Bitmap bitmapOvel = mBitmapOvel; 

    Paint p = new Paint(); 
    p.setStyle(Style.FILL); 
    p.setColor(Color.GREEN); 
    canvas.drawBitmap(mWoodDial, 10, centerY - centerX + 20, null); 
    p.setColor(Color.RED); 
    p.setStyle(Style.FILL_AND_STROKE); 
    if (height <= 320) 
    {   
        p.setTextSize(14f); 
    } 
    else if (height <= 480) 
    { 
        p.setTextSize(18f); 
    } 
    else 
    { 
        p.setTextSize(26f); 
    }
    String ss = Html.fromHtml(xx + "&#176 && " + yy + "&#176") .toString(); 
    canvas.drawBitmap(mBitmapOvelAlter, centerX + xx * 1.7f - 15f, centerY + 6f - yy, null); 
    canvas.rotate(xx, centerX, centerY); 
    p.setAntiAlias(true); 
    p.setFilterBitmap(true); 
    p.setDither(true); 
    canvas.save(); 
    canvas.drawBitmap(mWoodDial1, 10, centerY - centerX + 20, p); 
    canvas.restore(); 
    System.out.println("xx:" + xx + "::.. yy:" + yy); 
    // and make sure to redraw asap
    invalidate(); 
}
4

1 に答える 1

0

canvas.save() を canvas.rotate() の前に移動する必要があります。そうしないと、キャンバスを元の状態に戻すことはできません。

于 2012-10-05T06:04:13.227 に答える