Android:同时缩放两幅画布

时间:2012-09-05 16:33:48

标签: android canvas scale multi-touch

我正在创建一个多点触控应用程序,该应用程序依赖于具有用户无法看到的多个“命中框”的图像,但在触摸时执行操作。

我创建了一个用于保存hitbox信息的画布和位图。但是,在onDraw中平移和缩放我的视图画布与具有hitbox区域的位图不同。

具体代码见下文。 (hitbox和b是位图,hb是画布)感谢任何帮助。

public TouchImageView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);

    mBackground = this.getBackground();
    mBackground.setBounds(0, 0, mBackground.getIntrinsicWidth(), mBackground.getIntrinsicHeight());
    this.setBackgroundResource(android.R.color.transparent);
    // Create our ScaleGestureDetector

    mScaleDetector = new ScaleGestureDetector(context, new ScaleListener());

    hitbox = BitmapFactory.decodeResource(context.getResources(), R.drawable.hitbox);

    b = hitbox.copy(Bitmap.Config.ARGB_8888, true);

    hb = new Canvas(b);
}

@Override
public void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    super.onDraw(hb);

    canvas.save();
    hb.save();

    canvas.translate(mPosX, mPosY);
    hb.translate(mPosX, mPosY);

    canvas.scale(mScaleFactor, mScaleFactor);
    hb.scale(mScaleFactor, mScaleFactor);

    mBackground.draw(canvas);
    canvas.restore();
    hb.restore();
}

0 个答案:

没有答案