JAVA 任意椭圆方向画法

菜鸟我知道可以利用JAVA的Graphics类的fillArc()方法和drawOval()方法画出椭圆,在这两种方法下能画出四四方方的椭圆。但假如我要画一个45度的椭圆... 菜鸟我知道可以利用JAVA的Graphics类的fillArc()方法和drawOval()方法画出椭圆,在这两种方法下能画出四四方方的椭圆。但假如我要画一个45度的椭圆呢?例如是像的画法。最好有源代码 展开
 我来答
百度网友12ee0fd
推荐于2018-04-10 · TA获得超过4.7万个赞
知道大有可为答主
回答量:1.1万
采纳率:66%
帮助的人:2334万
展开全部

使用 AffineTransform 把Ellipse2D 旋转一下就可以了。

import java.awt.image.BufferedImage;
import java.awt.geom.AffineTransform;
import java.awt.geom.Ellipse2D;
import java.awt.Color;
import java.awt.Shape;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.io.File;
import javax.imageio.ImageIO;

public class DemoPNG {
    public static void main(String[] args) throws Exception {
        BufferedImage bi = new BufferedImage(600, 800, BufferedImage.TYPE_INT_ARGB);
        Graphics2D g2d = bi.createGraphics();
        g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        g2d.setPaint(Color.WHITE);
        g2d.fillRect(0,0,600, 800);
        g2d.setPaint(Color.RED);
        Ellipse2D s1 = new Ellipse2D.Double(100, 100, 400, 600);
        g2d.draw(s1);
        AffineTransform transform = AffineTransform.getRotateInstance(Math.PI/4, 300, 400);
        Shape r1 = transform.createTransformedShape(s1);
        g2d.fill(r1);
        AffineTransform transform2 = AffineTransform.getRotateInstance(Math.PI/2, 300, 400);
        Shape r2 = transform2.createTransformedShape(s1);
        g2d.draw(r2);
        g2d.dispose();
        ImageIO.write(bi, "PNG", new File("demo.png"));
    }
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式