Android将图像坐标映射到Imageview
我想在imageview中显示的图像的特定坐标处绘制。我使用imageview的src属性将图像加载到视图中。此代码在自定义图像视图中用于在图像上绘制:Android将图像坐标映射到Imageview,android,draw,Android,Draw,我想在imageview中显示的图像的特定坐标处绘制。我使用imageview的src属性将图像加载到视图中。此代码在自定义图像视图中用于在图像上绘制: protected void onDraw(Canvas canvas) { super.onDraw(canvas); float scaleh =(float)canvas.getHeight()/(float)orginalheight(); float scalew = ((float)canvas.ge
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
float scaleh =(float)canvas.getHeight()/(float)orginalheight();
float scalew = ((float)canvas.getWidth()/(float)orginalwidth());
canvas.drawRect(10*scaleh,9*scalew,20*scaleh,30*,scalewpaint);
}
此代码在错误的位置绘制矩形。有什么不对?您应该从
图像视图
本身而不是画布
中获取视图的尺寸,特别是当进一步的目标是在图像视图
中绘制图像时
画布可以作为一种伪装,或者说是与现实世界的接口
您的图形将在其上绘制的曲面-它保存您的所有图形
“抽签”电话。通过画布,您的绘图实际上是在画布上执行的
放置在窗口中的基础位图
首先,为了获得坐标,为ImageView
实现onTouchListener
。这将为您提供X和Y坐标,以便在其上绘制画布
imageView.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
xDown = event.getX();
yDown = event.getY();
break;
case MotionEvent.ACTION_MOVE:
xUp = event.getX();
uUp = event.getY();
canvas.drawLine(xDown, yDown, xUp, uUp, paint);
imageView.invalidate();
xDown = xUp;
yDown = uUp;
break;
case MotionEvent.ACTION_UP:
xUp = event.getX();
uUp = event.getY();
canvas.drawLine(xDown, yDown, xUp, uUp, paint);
imageView.invalidate();
break;
case MotionEvent.ACTION_CANCEL:
break;
default:
break;
}
return true;
}});
然后创建一个画布
,在ImageView顶部绘制
//Create a new image bitmap and attach a brand new canvas to it
Bitmap tempBitmap = Bitmap.createBitmap(myBitmap.getWidth(), myBitmap.getHeight(), Bitmap.Config.RGB_565);
Canvas canvas = new Canvas(tempBitmap);
paint = new Paint();
paint.setColor(YOUR_DESIRED_COLOR);
paint.setStrokeWidth(INT_VALUE);
matrix = new Matrix();
canvas.drawBitmap(bmp, matrix, paint);
//Attach the canvas to the ImageView
imageViewsetImageBitmap(tempBitmap);
您还可以使用canvas.drawRect(左、上、右、下、绘制)代码>如果您想简单地绘制矩形
希望能有所帮助。你到底想实现什么目标?