【问题标题】:Android: Drawing 2D Rectangle over a Background ImageAndroid:在背景图像上绘制 2D 矩形
【发布时间】:2014-04-01 21:45:53
【问题描述】:

我正在尝试在我的 Android 项目上绘制一个 2D 矩形。它工作得很好,但唯一的问题是我正在为我的项目使用背景图像。 2D 矩形不允许显示背景图像。例如,如果我在显示背景图像之前绘制矩形,则背景将隐藏矩形。如果我先显示背景然后绘制矩形,它会做同样的事情,只是这次矩形会完全隐藏背景图像。

public class DrawView extends View
{
Paint paint = new Paint();
public DrawView(Context context)
{
    super(context);
}

@Override
public void onDraw(Canvas canvas)
{
    Paint paint = new Paint();
    paint.setColor(Color.BLACK);
    paint.setStrokeWidth(3);
    canvas.drawRect(30, 30, 80, 80, paint);
    paint.setColor(Color.CYAN);
    canvas.drawRect(33,  60, 77, 77, paint);
    paint.setColor(Color.YELLOW);
    canvas.drawRect(33,  33, 77, 60, paint);
    }
}

在主窗体上:

protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);

    DrawView drawview = new DrawView(this);
    setContentView(drawview);
    setContentView(R.layout.activity_login);
}

【问题讨论】:

    标签: android canvas drawing


    【解决方案1】:

    尝试将super.onDraw() 添加到您的onDraw() 覆盖中,以便在您开始在其上绘制自定义元素之前执行视图的onDraw():

    @Override
    public void onDraw(Canvas canvas)
    {
       super.onDraw(canvas);
    
       Paint paint = new Paint();
       paint.setColor(Color.BLACK);
       paint.setStrokeWidth(3);
       canvas.drawRect(30, 30, 80, 80, paint);
       paint.setColor(Color.CYAN);
       canvas.drawRect(33,  60, 77, 77, paint);
       paint.setColor(Color.YELLOW);
       canvas.drawRect(33,  33, 77, 60, paint);
    }
    

    【讨论】:

    • 你想让这个矩形“半透明”,让背景通过它显示出来吗?
    • 是的。当我绘制其中一个(矩形或背景图像)时,它会隐藏另一个。
    【解决方案2】:

    我想通了。剩下的就是改变矩形的位置。 添加以下内容:

    addContentView(drawview, new LayoutParams(Width, Height));
    

    并删除 setContentView() 命令。

    【讨论】:

      猜你喜欢
      • 2016-05-21
      • 1970-01-01
      • 2019-11-03
      • 2012-02-23
      • 1970-01-01
      • 2013-06-24
      • 2020-10-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多