2014-05-12 81 views
-1

当我画像下面的Java:矩形宽度和高度

drawRect(0,0,39,39); 

一个矩形像素40两者的宽度和高度?当我在矩形上绘制一个我知道是40x40像素的图像并将该矩形放在它上面时,它完全适合。所以我有点困惑,因为java网站说第三和第四个变量指的是宽度和高度,但如果是这种情况,它并不真正指向真正的宽度,只是实际的宽度-1。我觉得我错过了一些东西或者犯了一个错误。 S

+0

请加入更多内容和信息。这是什么'Rect'功能?它来自哪里,它有什么作用? – ApproachingDarknessFish

+0

想着他的意思就是android – james

+0

如果我要做drawRect(0,0,39,39)。这是否与矩形(​​0,0,39,39)相同或是否为矩形(0,0,40,40)。我认为这是在让我感到困惑的两者之间跳跃。谢谢你们的帮助。对不起,没有更明确。 – user3630439

回答

3

它将是40x40。

http://developer.android.com/reference/android/graphics/Rect.html#Rect(int,INT,INT,INT)

public Rect (int left, int top, int right, int bottom) 

Added in API level 1 
Create a new rectangle with the specified coordinates. Note: no range checking is performed, so the caller must ensure that left <= right and top <= bottom. 

Parameters 
left The X coordinate of the left side of the rectangle 
top The Y coordinate of the top of the rectangle 
right The X coordinate of the right side of the rectangle 
bottom The Y coordinate of the bottom of the rectangle 

最后2个参数指示右侧和底部,所以因此,如果您从0开始,到39这40个像素。

+1

不好意思问一下关于drawRect以及如何与Rectangle类相关的问题。我正在做碰撞,需要绘制一个矩形,但是我也需要创建一个矩形。所以我可以说drawRect(0,0,39,39),并为我创建了一个40x40的矩形。但是,我想知道当我创建矩形实例。它应该是矩形(0,0,39,39)或矩形(0,0,40,40)以匹配所绘制的矩形。我猜这是现在的第二个。谢谢 – user3630439

+0

这是在这里记录的第二个:http://docs.oracle.com/javase/7/docs/api/java/awt/Rectangle.html#Rectangle%28int,%20int,%20int,%20int%29。公平地说,为什么Java开发人员会为一个方法选择一种格式,而为Rectangle类的构造函数选择不同的参数格式,这是令人困惑的。 – ajacian81

+0

非常感谢。我很感激帮助。 – user3630439

1

你的问题是混淆两个类。

  • Java的java.awt.Rectangle类有一个带参数的构造函数为你描述:Rectangle(int x, int y, int width, int height)

  • Android android.graphics.Rect类有一个构造函数,它具有不同的参数:Rect (int left, int top, int right, int bottom)

Rect没有记录在Java网站上,因为它不是Java的一部分。如果您已经在Java网站上找到了文档,则该文档适用于Rectangle类......这是不同的。


如果错误提供Rect论据,X,Y,宽度,高度,你很可能会引火烧身。为Rect构造的Javadoc说:

“注意:不进行范围检查,所以调用者必须确保左< =右侧和顶部< =底部。”

如果你不那么期待奇怪的事情发生。

(注意Rect(0,0,39,39)违反记录的约束...)

+0

抱歉意味着询问drawRect以及它如何与Rectangle类相关。我正在做碰撞,需要绘制一个矩形,但是我也需要创建一个矩形。所以我可以说drawRect(0,0,39,39),并为我创建了一个40x40的矩形。但是,我想知道当我创建矩形实例。它应该是矩形(0,0,39,39)或矩形(0,0,40,40)以匹配所绘制的矩形。我猜这是现在的第二个。谢谢 – user3630439

+1

停止猜测。这是一种糟糕的编程技术。阅读各自的javadoc,并假设他们所说的是正确的。这将回答你的问题。 –

+0

感谢您的回复。 – user3630439