首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在画布中央画正方形

在画布中央画正方形
EN

Stack Overflow用户
提问于 2014-05-31 11:42:34
回答 1查看 2.1K关注 0票数 2

我正在试图找出如何在我的onDraw方法中绘制一个正方形。

  1. 方格必须位于画布的正中(而不是屏幕)。
  2. 方格的左边和右边的填充/间距应该相等。
  3. 正方形顶部和底部的填充/间距应该相等。
  4. 方格的尺寸应该比较大,大约是画布宽度的90%。

到目前为止我的情况是这样的。

代码语言:javascript
复制
//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)

编辑:我想要达到的目标

EN

回答 1

Stack Overflow用户

发布于 2014-05-31 11:47:30

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

代码语言:javascript
复制
this.size = width - padding * 2;

编辑

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

代码语言:javascript
复制
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

也许一种更清晰的方法可以开始计算你的方格大小。

代码语言:javascript
复制
size = width * 0.9f;
int paddingLeft = (width - size) / 2;
int paddingTop = (height - size) / 2;
this.rect.set(paddingLeft,paddingTop,size,size);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23969643

复制
相关文章

相似问题

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