【发布时间】:2013-09-13 02:30:17
【问题描述】:
我正在尝试在Canvas 的top right hand corner 上绘制位图
到目前为止,我已经完成了以下工作:
//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.
}
有人可以帮我吗?
【问题讨论】:
-
在绘制位图中你有油漆的地方放 null
-
我试过了,但它只翻转了图像,但没有覆盖右上角
-
对于您的 bitmapRect,它显示 canvasWidth - 200,使用您放入画布宽度的原始位图 - 不管怎样,试试吧
-
位图被翻转是负数的结果
-
查看我的答案,我不知道您使用的是视图,我认为当您的代码未启动时它只是一个常规画布,这就是您扩展视图的方式
标签: java android bitmap android-canvas rect