了解drawRect或绘图坐标在Android中的实际工作方式

Abh*_*ary 31 android android-layout android-canvas

我试图在画布上绘制一个矩形,我正面临麻烦,以了解Android的矩形绘制的深度.我已经阅读了教程和每一个可能但我被卡住了.

在图像中,红色矩形是我的目标. 在此输入图像描述

无论任何矩形大小,我都需要在基座上方和矩形中间绘制红色矩形.我在这里遇到的最糟糕的噩梦是理解X,Y宽度和高度坐标.

任何人都可以解释数学如何工作,有时我们上升,Y达到非常小但相同的宽度坐标更高.并且我永远无法正确地证明红色内部矩形.在某些屏幕中,它在其他一些屏幕上运行良好.红色矩形有时会从父矩形中出来.

议程是了解坐标如何工作并确保内部红色矩形的完整性

根据一个例子得到一个解释会很棒.我在用-

void drawRect(float left, float top, float right, float bottom, Paint paint)
Run Code Online (Sandbox Code Playgroud)

绘制矩形

小智 36

canvas.drawRect(left,top,right,bottom,paint);

在这

  1. left:矩形左侧与画布左侧的距离.

  2. 顶部:从画布顶部开始的矩形顶面的距离

  3. 右:矩形右侧与画布左侧的距离.
  4. bottom:矩形底边与画布顶边的距离.

  • 我认为2和4是不正确的.它们必须是:2.顶部:从画布顶部开始的矩形顶部的距离4.底部:矩形的底部与画布顶部的距离. (11认同)
  • savan:这些值是以像素为单位的吗? (2认同)

The*_*101 23

这是有道理的.

float left = 100, top = 100; // basically (X1, Y1)

float right = left + 100; // width (distance from X1 to X2)
float bottom = top + 100; // height (distance from Y1 to Y2)
Run Code Online (Sandbox Code Playgroud)

从而

RectF myRectum = new RectF(left, top, right, bottom);
canvas.drawRect(myRectum, myPaint);
Run Code Online (Sandbox Code Playgroud)

  • 我认为Rectangle变量名是我在StackOverflow上见过的最有趣的东西.XD (10认同)

mer*_*ica 16

X从左到右水平延伸.Y从上到下垂直运行.它与您的图形完全相同.所以(0/0)在左上角.

当你"向上"时,Y当然会变小,因为它从上到下逐渐增长.

你必须注意布局像ListViews这样的元素,这些元素会给你绘制的视图提供部分(或新的,你无法分辨的)画布.这些视图在其自己的顶部/左侧位置将具有0x0 .如果你需要绝对值,你必须View.getLocationOnScreen()自己调用并计算偏移量.