Graphics2D API:Point类、PointF类

在Android中,绘制图形有关的类定义在android.graphics包下,本系列介绍Graphics2D涉及到的常用类,并介绍常见的绘图方法.

一、Point类、PointF类介绍

point翻译成中文为“点”,在Graphics2D中,Point、PointF类是一种最简单的结构,代表一个“点”,这两个类都实现了Parcelable接口,支持序列化与反序列化.

二、Point类

1、Point类中两个成员变量:
    public int x;
    public int y;

代表点的x坐标和y坐标.

2、图形坐标系

和数学中平面直角坐标系不同的是,Android中的图形坐标系像下面这样:


Graphics2D API:Point类、PointF类_第1张图片

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类增加了两个方法用来计算点到原点的距离,一个静态的,一个非静态的,虽然最终计算方法都一样.

你可能感兴趣的:(Graphics2D API:Point类、PointF类)