2014-07-07 2 views
0

Java2D 만 사용하여 JPanel에 this과 같은 사인 격자를 만들 수 있는지 궁금합니다.Java : Java2D를 사용하여 JPanel에서 SineGrating

저는 Swing과 Java2D jet에 익숙하지 않아, 제가 누락 된 간단한 것들이있을 수 있습니다. 실제로 이것을 할 수 없다면 JPanel 내부에서 JOGL과 함께 OpenGL을 사용하는 방법을 쉽게 안내해 줄 수 있습니까? Java2D와 JOGL이 함께 잘 작동한다는 것을 알고 있지만 실제로 정상적인 GUI에 OpenGL 그래픽이 표시되도록 초기화하는 방법을 모릅니다.

+0

"java.awt.LinearGradientPaint"또는이 [예제] (http://stackoverflow.com/q/7544559/230513)로 실험 해 볼 수 있습니다. – trashgod

+0

Java2D를 계속 사용하려면 trashgod의 제안으로 충분합니다. JOGL/OpenGL을 사용하는 방법을 배우는 것을 두려워하는 경우 2D 물건의 경우에도 Jzy3D를 볼 수 있고 후드에서는 JOGL을 사용하지만 사용하기가 더 쉽습니다. "일반 GUI"는 무엇을 의미합니까? – gouessej

+0

답장을 보내 주셔서 감사합니다. java.awt.LinearGradientPaint는 사실 내가 찾던 사실이었습니다! – BjoernBeyer

답변

0

질문은 기본적으로 trashgod에 의해 답변되었습니다. LinearGradientPaint를 사용하면 많은 샘플 포인트가있는 선형 그레이딩을 사용하여 실제 사인파 격자를 만들 수 있습니다. 사인파 격자를 만드는 예제 함수는 아래와 같습니다.

다시 도움 주셔서 감사합니다.

public LinearGradientPaint getSineWaveGrating(int numberCycles, int samplePoints, Point2D startP, Point2D endP, Color color) { 
    float[] fractions = new float[samplePoints+1]; 
    Color[] colors = new Color[samplePoints+1]; 

    for(int i=0;i<=samplePoints;i++) { 
    fractions[i]  = i*(1/(float)samplePoints); 
    double cosArg  = Math.PI+((i*numberCycles*2*Math.PI)/samplePoints); 
    double rectifiedCos = (Math.cos(cosArg)+1)/2; 
    colors[i]   = new Color(color.getRed(),color.getGreen(),color.getBlue(),(int)(255*rectifiedCos)); 
    } 

    return new LinearGradientPaint(startP, endP, fractions, colors); 
} 
관련 문제