1

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

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

具体代码见下文。(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();
}
4

0 回答 0