首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在图像视图上绘制矩形

无法在图像视图上绘制矩形
EN

Stack Overflow用户
提问于 2012-02-25 19:44:32
回答 1查看 4.5K关注 0票数 0

我在imageview上绘制矩形时遇到问题。这就是代码的安宁。Xml也在那里。我所关心的是,如果我们可以画矩形而不是图像视图。

代码语言:javascript
复制
protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.cropimage);
            paint=new Paint();
            bobj = new BaldBooth1();
            bm = BaldBooth1.bMap;
            d = new BitmapDrawable(bm);
            iv = ((ImageView) findViewById(R.id.image));
            iv.setImageDrawable(d);
            createRectInView(iv);

            ((ImageButton) findViewById(R.id.next)).setOnClickListener(this);

        }
        public void createRectInView(View v) {
            paint.setColor(Color.BLACK);
            paint.setStrokeWidth(3);
            canvas=new Canvas();
            canvas.drawRect(50, 50, 80, 80, paint);
            v.draw(canvas);


        }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-25 20:19:20

您的方法createRectInView(View v)不会在ImageView上绘制矩形,它只是创建一个canvas,在该canvas上绘制一个矩形,然后在该canvas上绘制ImageView的内容,因此它不会执行预期的操作。

以下是一种可能的解决方案:例如,您可以扩展ImageView并覆盖它的onDraw()方法。

代码语言:javascript
复制
public class ExtendedImageView extends ImageView {
    public void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        Paint paint = new Paint();
        paint.setColor(Color.BLACK);
        paint.setStrokeWidth(3);
        canvas.drawRect(50, 50, 80, 80, paint);
    }
}

更新:

嗨,arun,我刚刚测试了代码,它工作得很好。下面是详细信息:例如,您可以在com.abc.widget包中创建ExtendedImageView,因此在您的cropImage.xml文件中,将<ImageView android:id="@+id/image" android:layout_width="wrap_content" android:layout_height="wrap_content">替换为<com.abc.widget.ExtendedImageView android:id="@+id/image" android:layout_width="wrap_content" android:layout_height="wrap_content">。如您所见,您只需更改类名。然后将onCreate()方法更改为:

代码语言:javascript
复制
protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.cropimage);
            bobj = new BaldBooth1();
            bm = BaldBooth1.bMap;
            d = new BitmapDrawable(bm);
            iv = ((ImageView) findViewById(R.id.image));
            iv.setImageDrawable(d);
            ((ImageButton) findViewById(R.id.next)).setOnClickListener(this);

        }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9443680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档