在Android中,繪制圖形有關(guān)的類定義在android.graphics包下,本系列介紹Graphics2D涉及到的常用類,并介紹常見的繪圖方法.
一、Point類、PointF類介紹
point翻譯成中文為“點”,在Graphics2D中,Point、PointF類是一種最簡單的結(jié)構(gòu),代表一個“點”,這兩個類都實現(xiàn)了Parcelable接口,支持序列化與反序列化.
二、Point類
1、Point類中兩個成員變量:
public int x;
public int y;
代表點的x坐標(biāo)和y坐標(biāo).
2、圖形坐標(biāo)系
和數(shù)學(xué)中平面直角坐標(biāo)系不同的是,Android中的圖形坐標(biāo)系像下面這樣:
x軸:向右為正方向,向左為負(fù)方向
y軸:向下為正方向,向上為負(fù)方向
坐標(biāo)原點在左上角(屏幕左上角).
所以在屏幕內(nèi)的點x、y都大于0
當(dāng)x或者y有一個為負(fù)數(shù)時,這個點就在屏幕之外
3、構(gòu)造方法
public Point() {}
public Point(int x, int y) {
this.x = x;
this.y = y;
}
public Point(Point src) {
this.x = src.x;
this.y = src.y;
}
可以通過提供一個(x,y)坐標(biāo)初始化,也可以通過另外一個Point 對象初始化.
4、改變坐標(biāo)
/**
* Set the point's x and y coordinates
*/
public void set(int x, int y) {
this.x = x;
this.y = y;
}
/**
* Negate the point's coordinates
*/
public final void negate() {
x = -x;
y = -y;
}
/**
* Offset the point's coordinates by dx, dy
*/
public final void offset(int dx, int dy) {
x += dx;
y += dy;
}
set()方法直接為x、y賦值
negate()方法將x、y取反(相當(dāng)于以原點為中心,旋轉(zhuǎn)了180°+k×360°,k為整數(shù))
offset()方法偏移x、y值, dx與 dy的正負(fù)代表偏移的方向
三、PointF類
PointF類和Point類差不多,最大的不同就是成員變量x、y的數(shù)據(jù)類型不是int而是float,這也是類名加了“F”的原因.
點到坐標(biāo)原點的距離
/**
* Return the euclidian distance from (0,0) to the point
*/
public final float length() {
return length(x, y);
}
/**
* Returns the euclidian distance from (0,0) to (x,y)
*/
public static float length(float x, float y) {
return (float) Math.hypot(x, y);
}
相對于Point類,PointF類增加了兩個方法用來計算點到原點的距離,一個靜態(tài)的,一個非靜態(tài)的,雖然最終計算方法都一樣.