AWT CubicCurve2D类

1 什么是Java AWT CubicCurve2D

CubicCurve2D 类表示 (x,y) 坐标空间中的三次参数曲线段。

2 Java AWT CubicCurve2D的语法

public abstract class CubicCurve2D
   extends Object
      implements Shape, Cloneable

3 Java AWT CubicCurve2D的构造方法

构造方法 描述
protected CubicCurve2D() 这是一个不能直接实例化的抽象类。

4 Java AWT CubicCurve2D的方法

方法 描述
Object clone() 创建与此对象具有相同类的新对象。
boolean contains(double x, double y) 测试指定的坐标是否在 Shape 的边界内。
boolean contains(double x, double y, double w, double h) 测试 Shape 的内部是否完全包含指定的矩形区域。
boolean contains(Point2D p) 测试指定的 Point2D 是否在 Shape 的边界内。
boolean contains(Rectangle2D r) 测试 Shape 的内部是否完全包含指定的 Rectangle2D。
Rectangle getBounds() 返回一个完全包围 Shape 的整数 Rectangle。
abstract Point2D getCtrlP1() 返回第一个控制点。
abstract Point2D getCtrlP2() 返回第二个控制点。
abstract double getCtrlX1() 以双精度返回第一个控制点的 X 坐标。
abstract double getCtrlX2() 以双精度返回第二个控制点的 X 坐标。
abstract double getCtrlY1() 以双精度返回第一个控制点的 Y 坐标。
abstract double getCtrlY2() 以双精度返回第二个控制点的 Y 坐标。
double getFlatness() 返回这条曲线的平坦度。
static double getFlatness(double[] coords, int offset) 返回由存储在指示数组中指示索引处的控制点指定的三次曲线平坦度的平方。
static double getFlatness(double x1, double y1, double ctrlx1, double ctrly1, double ctrlx2, double ctrly2, double x2, double y2) 返回由指定控制点指定的三次曲线的平坦度。
double getFlatnessSq() 返回此曲线平坦度的平方。
static double getFlatnessSq(double[] coords, int offset) 返回由存储在指示数组中指示索引处的控制点指定的三次曲线平坦度的平方。
static double getFlatnessSq(double x1, double y1, double ctrlx1, double ctrly1, double ctrlx2, double ctrly2, double x2, double y2) 返回由指定控制点指定的三次曲线平坦度的平方。
abstract Point2D getP1() 返回起点。
abstract Point2D getP2() 返回终点。
PathIterator getPathIterator(AffineTransform at) 返回定义形状边界的迭代对象。
PathIterator getPathIterator(AffineTransform at, double flatness) 返回定义扁平形状边界的迭代对象。
abstract double getX1() 以双精度返回起点的 X 坐标。
abstract double getX2() 以双精度返回起点的 Y 坐标。
abstract double getY1() 以双精度返回终点的 Y 坐标。
abstract double getY2() 以双精度返回起点的 Y 坐标。
boolean intersects(double x, double y, double w, double h) 测试 Shape 的内部是否与指定矩形区域的内部相交。
boolean intersects(Rectangle2D r) 测试 Shape 的内部是否与指定的 Rectangle2D 的内部相交。
void setCurve(CubicCurve2D c) 将此曲线的端点和控制点的位置设置为与指定的 CubicCurve2D 中的位置相同。
void setCurve(double[] coords, int offset) 将此曲线的端点和控制点的位置设置为指定数组中指定偏移处的双坐标。
abstract void setCurve(double x1, double y1, double ctrlx1, double ctrly1, double ctrlx2, double ctrly2, double x2, double y2) 将此曲线的端点和控制点的位置设置为指定的双坐标。
void setCurve(Point2D[] pts, int offset) 将此曲线的端点和控制点的位置设置为指定数组中指定偏移处的 Point2D 对象的坐标。
void setCurve(Point2D p1, Point2D cp1, Point2D cp2, Point2D p2) 将此曲线的端点和控制点的位置设置为指定的 Point2D 坐标。
static int solveCubic(double[] eqn) 求解系数在 eqn 数组中的三次方,并将非复数根放回同一个数组中,返回根数。
static int solveCubic(double[] eqn, double[] res) 求解系数在 eqn 数组中的三次方,并将非复数根放入 res 数组中,返回根数。
void subdivide(CubicCurve2D left, CubicCurve2D right) 细分此三次曲线并将生成的两条细分曲线存储到左右曲线参数中。
static void subdivide(CubicCurve2D src, CubicCurve2D left, CubicCurve2D right) 细分由 src 参数指定的三次曲线,并将生成的两条细分曲线存储到左右曲线参数中。
static void subdivide(double[] src, int srcoff, double[] left, int leftoff, double[] right, int rightoff) 细分由存储在 src 数组中索引 srcoff 到 (srcoff + 7) 处的坐标指定的三次曲线,并将生成的两条细分曲线存储到相应索引处的两个结果数组中。

5 Java AWT CubicCurve2D的例子

让我们看一个简单的Java AWT CubicCurve2D类示例。

package com.yiidian;

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.geom.CubicCurve2D;

public class AWTGraphicsDemo extends Frame {
       
   public AWTGraphicsDemo(){
      super("一点教程网:Java AWT Examples");
      prepareGUI();
   }

   public static void main(String[] args){
      AWTGraphicsDemo  awtGraphicsDemo = new AWTGraphicsDemo();  
      awtGraphicsDemo.setVisible(true);
   }

   private void prepareGUI(){
      setSize(400,400);
      addWindowListener(new WindowAdapter() {
         public void windowClosing(WindowEvent windowEvent){
            System.exit(0);
         }        
      }); 
   }    

   @Override
   public void paint(Graphics g) {
      CubicCurve2D shape = new CubicCurve2D.Float();
      shape.setCurve(250F,250F,20F,90F,140F,100F,350F,330F);       
      Graphics2D g2 = (Graphics2D) g; 
      g2.draw (shape);
      Font font = new Font("Serif", Font.PLAIN, 24);
      g2.setFont(font);
      g.drawString("Welcome to yiidian.com", 50, 70);
      g2.drawString("CubicCurve2D.Curve", 100, 120);
   }
}

输出结果为:

热门文章

优秀文章