gpt4 book ai didi

android - 在 Canvas 中央画一个正方形

转载 作者:行者123 更新时间:2023-11-29 01:42:02 24 4
gpt4 key购买 nike

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

  1. 正方形必须位于 Canvas 的正中心(不是屏幕)
  2. 正方形左右两侧的填充/间距应为平等
  3. 正方形顶部和底部的填充/间距应相等
  4. 正方形的尺寸要比较大,大约90% Canvas 的宽度

这是我目前所拥有的。

//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);

}

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

为了让 canvas.drawRect(rect,paint) 直接在中心绘制矩形,我需要为此 Rect() 设置什么属性 Canvas ?

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

最佳答案

假设 width 是 Canvas 的宽度,我猜你错过了两次减去填充。-

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);

关于android - 在 Canvas 中央画一个正方形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23969643/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com