在Android上使用ImageView绘制

3

请问有谁能帮我解决一个问题,就是当从另一个Activity接收到像素值(圆心)时,如何在ImageView上绘制指定半径的圆形?

1个回答

3

扩展 ImageView 并重写 onDraw(Canvas c) 方法 - 添加 c.drawCircle(x,y,radius,Paint)

或者您也可以使用纯 Canvas 绘制圆形。

我尝试了这种方式,但仍然没有成功。

public class MyActivity extends Activity {
private MyImageView myImageView;
 float x, y;
 float [] loc;
float radius = 50;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_show_location);
    myImageView = (MyImageView) findViewById(R.id.mapimageView);
    myImageView.setImageResource(R.drawable.mymap);

    //Receiving location information(x/y pixels array) from myLocation Activity         
        Intent i = getIntent();     
        loc = i.getFloatArrayExtra("Location");

}
public class MyImageView extends ImageView
{

    public MyImageView(Context context) {
        super(context);         
    }
    // Constructor for inflating via XML
   public MyImageView(Context context, AttributeSet attrs) {
   super(context, attrs);         
    }


            @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        Paint p = new Paint();
        x= loc[0];
        y=loc[1];
        p.setColor(Color.RED);
        p.setStrokeWidth(2);        
        canvas.drawCircle(x, y, radius, p);
    }       
}

在xml中将<ImageView更改为your.package.name.MyImageView

// 编辑:我只是根据记忆写的,可能会有错别字


我感激你的帮助,有人能看一下我的代码中是否有错误吗?谢谢 ;) - xiongdi
谢谢你的帮助。我遇到了一个问题,绘图使用的是屏幕像素位置而不是图像视图。有什么建议如何修改偏移量吗?谢谢。 - xiongdi
myImageView.getLeft()和myImageView.getTop()应该可以得到ImageView在父容器布局中的X和Y偏移量,也许还有Android顶部状态栏高度的偏移量,但我不确定,可以试试看。 - Hruskozrout

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接