了解实际上drawRect或绘图坐标在Android中的工作原理

我正试图在canvas上绘制一个矩形,并且我正在面对烦恼来理解Android的矩形绘制的深入。 我读过教程和每一个可能,但我卡住了。

在图像中,红色矩形是我的目标。 在这里输入图像说明

不pipe任何矩形大小,我需要绘制矩形的上方和矩形中间的红色矩形位。 我在这里面临的最糟糕的噩梦是了解X,Y宽度和高度坐标。

任何人都可以解释一下这个math是如何工作的,有时候我们上去,Y达到很小但是相同的宽度坐标更高。 而我永远不能正确地certificate红色的内部矩形。在某些屏幕上,它在其他一些失败的情况下运行良好。 红色矩形有时会从父矩形中出来。

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

根据一个例子来解释会很好。 我在用-

void drawRect(float left, float top, float right, float bottom, Paint paint) 

绘制矩形

Solutions Collecting From Web of "了解实际上drawRect或绘图坐标在Android中的工作原理"

X从左到右水平运行。 Y从上到下垂直运行。 它和你的graphics完全一样。 所以(0/0)在左上angular。

当你走上去的时候,Y会自上而下地变小。

你必须注意布局ListView这样的元素,这些会给你绘制的视图赋予一个局部的(或者新的,你不能说的)canvas。 这些视图在它们自己的顶部/左侧位置将具有0x0。 如果你需要绝对的,你必须随后调用View.getLocationOnScreen()并自己计算偏移量。

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

在这

  1. 左:canvas左侧矩形左侧的距离。

  2. 顶部:矩形底边距帆布顶端的距离

  3. 右:canvas左侧矩形右侧的距离。
  4. 底部:矩形顶端距canvas顶端的距离。

这将是有道理的。

 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) 

从而

 RectF myRectum = new RectF(left, top, right, bottom); canvas.drawRect(myRectum, myPaint);