2013-10-19 14 views
22

我試圖在畫布上畫一個矩形,並且我正在面臨麻煩,以瞭解Android矩形繪製的深入。我讀過教程和每一個可能的,但我卡住了。瞭解實際上drawRect或繪圖座標在Android中的工作方式

在圖像中,紅色矩形是我的目標。 enter image description here

無論任何矩形大小,我需要繪製矩形的上方和矩形中間的紅色矩形位。我在這裏面臨的最糟糕的噩夢是瞭解X,Y寬度和高度座標。

任何人都可以解釋數學是如何工作的,有時候我們上去,Y達到非常小但寬度相同的座標更高。而且我永遠無法正確地證明紅色內部矩形。在某些屏幕中,它在其他一些屏幕中運行良好,但失敗。紅色矩形有時會從父矩形中出來。

議程是要了解如何協調工作,確保內部的紅色矩形

的完整性,這將是巨大的,我們將根據一個例子進行說明。我using-

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

繪製

+1

矩形(topleftx,toplefty,bottomrightx,bottomrighty) – JRowan

+0

我知道這些參數,但我無法理解X,Y值,如何設置它..任何例子說明幫助 –

+0

@JRowan在我發佈的矩形中,這些參數值在哪裏設置? –

回答

14

X水平運行,由左到右的矩形。 Y從上到下垂直運行。它和你的圖形完全一樣。所以(0/0)在左上角。

當你走向「向上」時,隨着它從上到下增長,Y當然會變小。

您必須注意佈置ListView等元素,這些會爲您繪製的視圖提供部分(或新建,不能說)畫布。這些視圖將在自己的頂部/左側位置具有0x0。如果您需要絕對的話,您必須隨後撥打View.getLocationOnScreen()並自行計算偏移量。

+0

meredrica:這些值是以像素爲單位的? – Aniruddha

+0

是的值是以像素爲單位的。 – meredrica

28

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

在這種

  1. 左:左側矩形的從 畫布的左側的距離。

  2. 頂部:矩形的右側從 畫布的左側的距離:從帆布

  3. 右的頂側的矩形的底側的距離。
  4. 底部:矩形頂端距帆布頂端的距離。
+10

我認爲2和4是不正確的。他們需要是: 2.頂部:長方形的頂邊距畫布頂部的距離 4.底部:長方形的底邊距畫布頂部的距離。 –

+0

savan:這些值是以像素爲單位的嗎? – Aniruddha

+0

簡單而完美的解釋。確切地說,我需要真正理解這一點。 –

15

這是有道理的。

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

我認爲Rectangle變量名是我在StackOverflow上見過的最有趣的事情。 XD – IRGeekSauce

相關問題