我知道'手绘'一个圆的参数方程。我想知道是否有一种快速获取坐标的方法,因为那将是麻烦。对于粉红色的独角兽而言。
答案 0 :(得分:2)
您可以,但您可能必须使用Sun的专有代码。我不确定什么是许可证,但Eclipse不允许我编译代码。但是,您可以使用命令行Java编译它,因此我相信它可以使用。
以下是如何使用它的示例。
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Path2D;
import sun.java2d.loops.ProcessPath;
public class Test
{
static public void main(
final String ... args)
{
final Ellipse2D e2D = new Ellipse2D.Float(0, 0, 100, 200);
final AffineTransform at = new AffineTransform();
final Path2D.Float p2D = new Path2D.Float(e2D, at);
final sun.java2d.loops.ProcessPath.DrawHandler dhnd =
new ProcessPath.DrawHandler(0, 0, 100, 200)
{
public void drawLine(
final int x1,
final int y1,
final int x2,
final int y2)
{
System.out.printf("Line: %d,%d -> %d,%d\n", x1, y2, x2, y2);
}
public void drawPixel(
final int x,
final int y)
{
System.out.printf("Pixel: %d,%d\n", x, y);
}
public void drawScanline(
final int x1,
final int x2,
final int y)
{
System.out.printf("ScanLine: %d,%d -> %d,%d\n", x1, y, x2, y);
}
};
sun.java2d.loops.ProcessPath.drawPath(dhnd, p2D, 0, 0);
}
}
代码打印出绘制的像素和绘制的线条(计算线条的像素并不是那么困难)。
如您所见,此代码不涉及窃取绘图代码。它只是听取正在绘制的内容。所以去吧可能会很好。
如果许可证确实存在问题,您可以使用PathIterator。 Eclipse2D可以为您提供可以使用的PathIterator并从那里跟踪像素。
答案 1 :(得分:2)
使用Ellipse2D.contains(Point)
方法。你可以传递矩形rea中的所有坐标,看看它们是否在椭圆形区域。
答案 2 :(得分:1)
您可以查看drawOval()的源代码并窃取它。
或者您可以抓住您认为绘制椭圆的区域,然后绘制椭圆,然后再次抓住相同的区域,并将其与前一个区域逐个像素地进行比较。