0
원형 차트에 값과 임의 색상을 그릴 코드가 있습니다. 이제 저는 파이 한 개가 아닌 전체 그림을 회전시키고 싶습니다.Java에서 원형 차트를 회전하는 방법
행 AA에서class Slice{
double value;
Color color;
public Slice(double _value){
this.value = _value;
}
public void setColor(Color _color){
this.color = _color;
}
}
class Component extends JComponent implements MouseListener{
int movx = 0;
int movy = 0;
Slice[] slice = {new Slice(5),new Slice(20),new Slice(33),new Slice(55)};
public Component(){
addMouseListener(this);
}
public void paint(Graphics g){
Graphics2D g2 = (Graphics2D)g;
drawPie(g2, getBounds(), slice);
}
public void drawPie(Graphics2D g, Rectangle area, Slice[] s){
double total = 0.0D;
//calculate total value
for(int i=0;i<s.length;i++)
total+=s[i].value;
double curentValue = 0.0D;
int startAngle = 0;
for(int i = 0;i<s.length;i++){
Random numGen = new Random();
s[i].setColor(new Color(numGen.nextInt(256), numGen.nextInt(256), numGen.nextInt(256)));
startAngle = (int)((curentValue*360)/total);
int arcAngle = (int)((s[i].value*360)/total) ;
g.setColor(s[i].color);
g.rotate(30);//row AA
g.fillArc(area.x, area.y, area.width, area.height, startAngle, arcAngle);
curentValue+=s[i].value;
}
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
movx = e.getX();
movy = e.getY();
repaint();
}
// unimplemented Mouse methods removed
}
public class PieChart {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame frame = new JFrame();
frame.getContentPane().add(new Component());
frame.setSize(300,200);
frame.setVisible(true);
}
}
내가 rotate
쓰기, 정상적으로 작동하지 않을 수 있습니다 : 여기 내 코드는? 너 나 좀 도와 줄 수있어? 전체 차트를 회전하려면 어떻게해야합니까?
나는 그것을 알고있다, 나는 모든 차트, 차트의 모든 요소를 회전시키고 싶다. 360도는 더 이상 예도가 아니다. –
OK, 나는 대답을 편집했지만, 나는 아직도 당신이 이해하지 못한다고 생각한다. radians *를 rotate 메소드에 반환합니다. 30은 비현실적으로 큰 값 (라디안)입니다. – lbalazscs
우우, 우연히 읽었습니다. 나는이 변형을 시도 할 것이다, 고마워. –