package xyz.dengchao.util;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.event.WindowAdapter;
import javax.swing.JFrame;
import javax.swing.JPanel;
class PaintovalPane extends JPanel {
/**
*
*/
private static final long serialVersionUID = 1L;
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
int startX = 50;
int startY = 50;
int width = 500;
int height = 150;
int fromCenter = 0;
int startX1 = (int) Math.floor(startX + fromCenter * Math.cos(getAngle(0 + 50/2)));
int startY1 = (int) Math.floor(startY - fromCenter * Math.sin(getAngle(0 + 50/2)));
System.out.println("(" + startX1 + ", " + startY1 + ")");
int startX2 = (int) Math.floor(startX + fromCenter * Math.cos(getAngle(50 + 40/2)));
int startY2 = (int) Math.floor(startY - fromCenter * Math.sin(getAngle(50 + 40/2)));
System.out.println("(" + startX2 + ", " + startY2 + ")");
int startX3 = (int) Math.floor(startX + fromCenter * Math.cos(getAngle(90 + 100/2)));
int startY3 = (int) Math.floor(startY - fromCenter * Math.sin(getAngle(90 + 100/2)));
System.out.println("(" + startX3 + ", " + startY3 + ")");
int startX4 = (int) Math.floor(startX + fromCenter * Math.cos(getAngle(190 + 100/2)));
int startY4 = (int) Math.floor(startY - fromCenter * Math.sin(getAngle(190 + 100/2)));
System.out.println("(" + startX4 + ", " + startY4 + ")");
int startX5 = (int) Math.floor(startX + fromCenter * Math.cos(getAngle(290 + 70/2)));
int startY5 = (int) Math.floor(startY - fromCenter * Math.sin(getAngle(290 + 70/2)));
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g.setColor(Color.green);
g.fillArc(startX1, startY1, width, height, 0, 50);
g.setColor(Color.red);
g.fillArc(startX2, startY2, width, height, 50, 40);
g.setColor(Color.PINK);
for(int i = 0; i < 50; i++){
g.drawArc(startX3 - fromCenter, startY3 + i, width, height, 90, 100);
}
g.fillArc(startX3, startY3, width, height, 90, 100);
g.setColor(Color.blue);
g.fillArc(startX4, startY4, width, height, 190, 100);
for(int i = 0; i < 50; i++){
g.drawArc(startX - fromCenter, startY + i, width, height, 191, 99);
}
g.setColor(Color.orange);
g.fillArc(startX5, startY5, width, height, 290, 70);
for(int i = 1; i < 50; i++){
g.drawArc(startX + fromCenter, startY + i, width, height, 290, 69);
}
}
private double getAngle(double src){
return src * Math.PI / 180;
}
}
class PaintovalFrame extends JFrame {
private static final long serialVersionUID = 1L;
public PaintovalFrame() {
setTitle("lamp");
setSize(500, 500);
addWindowListener(new WindowAdapter() {
});
Container contentPane = getContentPane();
contentPane.add(new PaintovalPane());
}
}
public class Paintoval {
public static void main(String[] args)
{
JFrame f = new PaintovalFrame();
Dimension d = new Dimension();
d.width = 650;
d.height = 200;
f.setMinimumSize(d);
f.setVisible(true);
}
}