Java:使用Java2D在JPanel中进行SineGrating

时间:2014-07-07 19:10:40

标签: java swing opengl user-interface java-2d

我想知道是否可以仅使用Java2D在JPanel中创建像this这样的正弦光栅。

我不熟悉Swing和Java2D喷气式飞机,所以我可能会遇到一些简单的事情。如果事实上不可能这样做,有人可以提供一个简单的教程如何在JPanel中使用OpenGL和JOGL吗? 我知道Java2D和JOGL很好地协同工作但我真的不知道如何初始化东西以使OpenGL图形显示在我的普通GUI中。

1 个答案:

答案 0 :(得分:0)

问题主要由trashgod回答。使用LinearGradientPaint,可以通过使用具有许多samplePoints的线性分级来创建真正的正弦波光栅。 下面是一个创建正弦波光栅的示例函数。

再次感谢您的帮助!

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);
}