在Android中,绘制图形有关的类定义在android.graphics包下,本系列介绍Graphics2D涉及到的常用类,并介绍常见的绘图方法.
一、Point类、PointF类介绍
point翻译成中文为“点”,在Graphics2D中,Point、PointF类是一种最简单的结构,代表一个“点”,这两个类都实现了Parcelable接口,支持序列化与反序列化.
二、Point类
1、Point类中两个成员变量:
public int x;
public int y;
代表点的x坐标和y坐标.
2、图形坐标系
和数学中平面直角坐标系不同的是,Android中的图形坐标系像下面这样:
x轴:向右为正方向,向左为负方向
y轴:向下为正方向,向上为负方向
坐标原点在左上角(屏幕左上角).
所以在屏幕内的点x、y都大于0
当x或者y有一个为负数时,这个点就在屏幕之外
3、构造方法
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)坐标初始化,也可以通过另外一个Point 对象初始化.
4、改变坐标
/**
* 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取反(相当于以原点为中心,旋转了180°+k×360°,k为整数)
offset()方法偏移x、y值, dx与 dy的正负代表偏移的方向
三、PointF类
PointF类和Point类差不多,最大的不同就是成员变量x、y的数据类型不是int而是float,这也是类名加了“F”的原因.
点到坐标原点的距离
/**
* 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类增加了两个方法用来计算点到原点的距离,一个静态的,一个非静态的,虽然最终计算方法都一样.