Hallo,
ich entwickle ein kleines CAD-System mit Java3D. Auf meinem alten PC (Windows XP) funktioniert es auch problemlos. Unter Windows Vista hängt das Fadenkreuz, weil das Zeichnen mit Graphics2D und der XOR-Methode sehr langsam ist.
Ich verwende die JDK 1.6 und Java3d 1.5
Weise ich dem Canvas3D kein SimpleUniverse zu, ist die Geschwindigkeit OK.
Ist das ein Problem von Windows Vista?
Oder gibt es eine Einstellung, die man vornehmen muss?
Vielen Dank und viele Grüße
MikeM
ich entwickle ein kleines CAD-System mit Java3D. Auf meinem alten PC (Windows XP) funktioniert es auch problemlos. Unter Windows Vista hängt das Fadenkreuz, weil das Zeichnen mit Graphics2D und der XOR-Methode sehr langsam ist.
Ich verwende die JDK 1.6 und Java3d 1.5
Weise ich dem Canvas3D kein SimpleUniverse zu, ist die Geschwindigkeit OK.
Code:
import java.awt.*;
import javax.swing.*;
import javax.media.j3d.*;
import com.sun.j3d.utils.universe.*;
@SuppressWarnings("serial")
public class myTestFrame extends JFrame
{
protected SimpleUniverse universe = null;
private Canvas3D cadPanel = null;
private Point crossHairPosition = new Point();
private boolean crossHairIsVisible = false;
public myTestFrame()
{
cadPanel = new Canvas3D(SimpleUniverse.getPreferredConfiguration());
universe = new SimpleUniverse(cadPanel);
universe.addBranchGraph(new BranchGroup());
cadPanel.setBackground(Color.black);
cadPanel.addMouseMotionListener(new java.awt.event.MouseMotionAdapter()
{
public void mouseMoved(java.awt.event.MouseEvent e)
{
cadPanel_mouseMoved(e);
}
});
this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
this.getContentPane().add(cadPanel);
this.addWindowListener(new java.awt.event.WindowAdapter()
{
public void windowClosing(java.awt.event.WindowEvent e)
{
System.exit(0);
}
});
}
public static void main(String[] args)
{
myTestFrame instance = new myTestFrame();
instance.setSize(600, 400);
instance.setVisible(true);
}
private void cadPanel_mouseMoved(java.awt.event.MouseEvent e)
{
if (crossHairIsVisible) drawCrossHair();
crossHairPosition.x = e.getX();
crossHairPosition.y = e.getY();
drawCrossHair();
}
public void drawCrossHair()
{
Graphics2D g2d = (Graphics2D) cadPanel.getGraphics();
g2d.setXORMode(Color.white);
g2d.drawLine(crossHairPosition.x, crossHairPosition.y-20,
crossHairPosition.x, crossHairPosition.y+20);
g2d.drawLine(crossHairPosition.x-20, crossHairPosition.y,
crossHairPosition.x+20, crossHairPosition.y);
crossHairIsVisible = !crossHairIsVisible;
}
}
Ist das ein Problem von Windows Vista?
Oder gibt es eine Einstellung, die man vornehmen muss?
Vielen Dank und viele Grüße
MikeM