Java 如何在画布的右上角绘制位图

Java 如何在画布的右上角绘制位图,java,android,bitmap,android-canvas,rect,Java,Android,Bitmap,Android Canvas,Rect,我试图在画布的右上角绘制位图 到目前为止,我已经做了以下工作: //100x40 dimensions for the bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.backbutton); Rect source = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); Rect bitmap

我试图在
画布的
右上角绘制位图

到目前为止,我已经做了以下工作:

//100x40 dimensions for the bitmap
bitmap = BitmapFactory.decodeResource(getResources(),
                        R.drawable.backbutton);

Rect source = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
Rect bitmapRect = new Rect(0, 0, canvasWidth -200,50);

canvas.drawBitmap(bitmap, source, bitmapRect, paint);
问题是,当我运行应用程序时,位图不会出现在屏幕上。 完整代码:

public class MyView extends View {
Rect bitmapRect;
public MyView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
}

public MyView(Context context, AttributeSet attrs) {
    super(context, attrs);
}

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);    //To change body of overridden methods use File | Settings | File Templates.

    Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.backbutton);

    Rect source = new Rect(0,0,bitmap.getWidth(), bitmap.getHeight());
    bitmapRect = new Rect(0,0, bitmap.getWidth(), bitmap.getHeight());

    canvas.drawBitmap(bitmap, source, bitmapRect, new Paint());

}

@Override
public boolean onTouchEvent(MotionEvent event) {
    int x = (int)event.getX();
    int y =   (int)event.getY();
    if(null != bitmapRect && bitmapRect.contains(x,y)){
        Toast.makeText(view.getContext(), "this works", Toast.LENGTH_LONG).show();
    }


    return super.onTouchEvent(event);    //To change body of overridden methods use File | Settings | File Templates.
}

有人能帮我吗?

在我的视图中,就在Rect bitmapRect下面;制造变量

public int width;
public int height;
然后在MyView类中,将此方法放在其中

@Override
protected void onSizeChanged (int w, int h, int oldw, int oldh)
{
width = w;
height = h;
}
现在,您已经拥有了正在使用的画布的宽度和高度 然后在onDraw()方法中,使bitmapRect如下所示

bitmapRect = new Rect(width -200,0, width, 50);

我认为问题在于,当你对rect使用draw命令时,你的rect中有一个负数,它反转了位图,一个是你要绘制的内容的来源,一个是它要绘制的目的地

put null,你在绘制bitmapI时有绘画,我尝试过,但它只翻转了图像,但没有覆盖bitmapRect的右上角,上面写着canvasWidth-200,使用你放在画布宽度中的原始位图-不管怎样,尝试一下位图被翻转是负数的结果检查我的答案,我不知道你在使用一个视图,我认为它只是一个普通的画布,当你的代码没有打开时,这就是你扩展视图的方式仍然是相同的问题=(它从左上角覆盖区域,但不覆盖右上角看到我刚刚更改了位图矩形,我的坏习惯不知道为什么会发生。我想知道是否有其他方法可以在x,y位置绘制位图,并测试运动边界。如果我的矩形错误,我是如何得到的(宽度-200,0200,50)错了我刚才怎么说是对的,应该是你要找的