Java:使用Java2D在JPanel中进行SineGrating

Java:使用Java2D在JPanel中进行SineGrating,java,swing,opengl,user-interface,java-2d,Java,Swing,Opengl,User Interface,Java 2d,我想知道是否有可能只使用Java2D创建一个像JPanel中那样的正弦光栅 我不太擅长Swing和Java2D jet,所以可能有一些简单的东西我遗漏了。如果事实上不可能做到这一点,请有人给我提供一个简单的教程,如何在JPanel中使用OpenGL和JOGL? 我知道Java2D和JOGL可以很好地协同工作,但我真的不知道如何初始化东西,以使OpenGL图形显示在我的普通GUI中。这个问题基本上是由垃圾神回答的。使用LinearGradientPaint,可以通过使用具有多个采样点的线性放坡来创

我想知道是否有可能只使用Java2D创建一个像JPanel中那样的正弦光栅

我不太擅长Swing和Java2D jet,所以可能有一些简单的东西我遗漏了。如果事实上不可能做到这一点,请有人给我提供一个简单的教程,如何在JPanel中使用OpenGL和JOGL?
我知道Java2D和JOGL可以很好地协同工作,但我真的不知道如何初始化东西,以使OpenGL图形显示在我的普通GUI中。

这个问题基本上是由垃圾神回答的。使用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);
}
public LinearGradientPaint getSineWaveGrating(整数周期、整数采样点、点2D起始点、点2D结束点、颜色){
float[]分数=新的float[samplePoints+1];
颜色[]颜色=新颜色[samplePoints+1];

对于(int i=0;iYou可能会尝试使用
java.awt.LinearGradientPaint
或者这个。如果你想坚持使用Java2D,垃圾神的建议应该足够了。如果你害怕学习如何使用JOGL/OpenGL,你可以看看Jzy3D,即使是2D的东西,它在引擎盖下使用JOGL,但更容易使用。你所说的“普通GUI”是什么意思?谢谢你们的回复!java.awt.LinearGradientPaint实际上正是我想要的!