在画布的中心画一个正方形

时间:2014-05-31 11:42:34

标签: android canvas

我正试图弄清楚如何在Android中的onDraw方法中绘制一个Square。

  1. 广场必须位于画布的确切中心 (不是屏幕)
  2. 广场左右两侧的填充/间距应为 等于
  3. 正方形顶部和底部的填充/间距应相等
  4. 广场的大小应该比较大,约为90% 画布的宽度
  5. 这是我到目前为止所拥有的。

    //this.rect is an instance of Rect() which later gets called in the canvas.drawRect() method
    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    
        int width = this.getMeasuredWidth();
        int height = this.getMeasuredHeight();
        int padding = (width / 10);
    
        this.size = width - padding;
        this.rect.set(padding,padding,size,size);
    
    }
    

    上面的代码绘制了正方形,但我不确定如何让它在画布中居中。我也愿意使用另一种不涉及使用Rect的技术。

    我需要将哪些属性设置为此Rect(),以便canvas.drawRect(rect,paint)直接在画布的中心绘制矩形?

    编辑: Terribly drawn example of what I want to achieve

1 个答案:

答案 0 :(得分:1)

假设width是画布的宽度,我猜你错过了两次填充.-

this.size = width - padding * 2;

修改

由于我们在这里谈论一个矩形,您需要对代码进行一些更改,并计算不同的顶部和左侧填充.-

int width = this.getMeasuredWidth();
int height = this.getMeasuredHeight();
int paddingLeft = (width / 10);
size = width - paddingLeft * 2;
int paddingTop = (height - size) / 2;
this.rect.set(paddingLeft,paddingTop,size,size);

编辑2

也许更清晰的方法会开始计算你方阵的大小.-

size = width * 0.9f;
int paddingLeft = (width - size) / 2;
int paddingTop = (height - size) / 2;
this.rect.set(paddingLeft,paddingTop,size,size);