Compreender como as coordenadas de desenho e desenho realmente funcionam no Android
independentemente de qualquer tamanho de rectângulo, preciso desenhar o bit de rectângulo vermelho acima da base e no meio do rectângulo. O pior pesadelo que estou a enfrentar aqui é compreender a largura e a altura X,Y coordenada.
Alguém pode explicar como é que a matemática funciona, às vezes subimos, e chegamos a Coordenadas muito pequenas, mas as mesmas coordenadas são mais altas. E nunca sou capaz de justificar o rectângulo interior vermelho properly.In alguma tela funciona bem em algum outro ele falha. O retângulo vermelho às vezes sai do retângulo pai.Agenda é entender como as coordenadas funcionam e garantir a integridade do retângulo vermelho interior
Seria óptimo ter uma explicação baseada num exemplo. Estou a usar ...void drawRect(float left, float top, float right, float bottom, Paint paint)
desenhar o rectângulo
3 answers
X corre horizontalmente, da esquerda para a direita. O Y corre verticalmente, de cima para baixo. É exactamente o mesmo que nos teus gráficos. Então (0/0) está em cima à esquerda.
Quando fores "para cima", claro que vais ficar mais pequeno, à medida que cresce de cima para baixo.Você tem que prestar atenção à apresentação de elementos como ListViews, estes irão dar uma área parcial (ou nova, você não pode dizer) para as suas vistas que são desenhadas. Estas vistas terão 0x0 em a sua própria posição em cima/esquerda. Se necessitar de: absolute you have to subsequently call {[[0]} and calculate offets yourself.
canvas.drawRect(left,top,right,bottom,paint);
Neste
Esquerda: distância do lado esquerdo de retangular do lado esquerdo de tela.
Superior: distância do lado superior do rectângulo em relação ao lado superior do área de desenho
- direita: distância do lado direito do rectângulo em relação ao lado esquerdo do tela.
- fundo: distância do lado inferior do rectângulo em relação ao lado superior da tela.
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)
Assim
RectF myRectum = new RectF(left, top, right, bottom);
canvas.drawRect(myRectum, myPaint);