Liebe Javafreunde,
habe hier mein altes Standardproblem in Java wiederentdeckt: "BufferedImage"
Also ich möchte gerne ( so schnell wie möglich ) einen Funktionsgraphen auf weißem Hintergrund zeichnen und dabei entweder:
a) drawline verwenden ( wenn es das Schnellste ist ?) und auf den Grafikkontext des JPanels direkt zeichnen
oder
b) image.setrgb vom BufferedImage, welches ich auf das JPanel setze.
Folgenden Code habe ich fabriziert, weil ich Möglichkeit b) bevorzuge (vielleicht schneller - ich finde das jedenfalls schöner).
Leider bekomme ich immer diesen schwarzen Hintergrund. Habe im Netz geforscht und es ergab sich, dass ich wohl nur TYPE_INT_RGB in TYPE_INT_ARGB ändern müsste, aber das hat auch nicht geholfen, denn dann zeichnet er gleichmal gar nichts.
Wenn jemand das schonmal umgesetzt hat, freu ich mich über Lösungsvorschläge!
habe hier mein altes Standardproblem in Java wiederentdeckt: "BufferedImage"
Also ich möchte gerne ( so schnell wie möglich ) einen Funktionsgraphen auf weißem Hintergrund zeichnen und dabei entweder:
a) drawline verwenden ( wenn es das Schnellste ist ?) und auf den Grafikkontext des JPanels direkt zeichnen
oder
b) image.setrgb vom BufferedImage, welches ich auf das JPanel setze.
Folgenden Code habe ich fabriziert, weil ich Möglichkeit b) bevorzuge (vielleicht schneller - ich finde das jedenfalls schöner).
Leider bekomme ich immer diesen schwarzen Hintergrund. Habe im Netz geforscht und es ergab sich, dass ich wohl nur TYPE_INT_RGB in TYPE_INT_ARGB ändern müsste, aber das hat auch nicht geholfen, denn dann zeichnet er gleichmal gar nichts.
Wenn jemand das schonmal umgesetzt hat, freu ich mich über Lösungsvorschläge!
Code:
public class PlotPanel extends JPanel
{
private double ymin;
private double ymax;
private double[] tabelle;
BufferedImage image;
Dimension d;
public PlotPanel(EingabeDaten Eingabe) {
d = Toolkit.getDefaultToolkit().getScreenSize();
ymin = Eingabe.ymin;
ymax = Eingabe.ymax;
tabelle = Eingabe.tabelle;
image = new BufferedImage(d.width,d.height, BufferedImage.TYPE_INT_RGB);
updateImage();
}
@Override
protected void paintComponent( Graphics g )
{
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.drawImage(image,0,0,this);
}
public void updateImage() {
int dummy;
for (int i=0; i < image.getHeight(); i++) {
image.setRGB(image.getWidth()/2, i, 444);
}
for (int i=0; i < image.getWidth(); i++) {
image.setRGB(i, image.getHeight()/2, 444);
}
for (int i=1; i < image.getWidth(); i++) { // bei 1 beginnen!!!!!!
dummy = (int) (( (tabelle[i]-ymax)/(ymin-ymax) )*image.getHeight());
image.setRGB(i, dummy, 555577);
}
}