问题
Here is the line of code where I declare the curve:
QuadCurve2D.Double curve = new QuadCurve2D.Double(50,100,100,170,150,100);
Now what code can I use to draw this curve? I tried something like:
g.draw(curve);
but obviously that didn't work. Any suggestions?
回答1:
I've made a minimum test case of what I think your describing here. This program works but I can't really help you unless I can see the code you are working with.
import java.awt.geom.*;
import java.awt.*;
import javax.swing.*;
public class CurveDraw extends JFrame {
public static void main(String[] args) {
CurveDraw frame = new CurveDraw();
frame.setVisible(true);
}
public CurveDraw() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400,400);
}
public void paint(Graphics g) {
QuadCurve2D.Double curve = new QuadCurve2D.Double(50,100,100,170,150,100);
((Graphics2D)g).draw(curve);
}
}
回答2:
Works fine for me...
public class PaintQuad {
public static void main(String[] args) {
new PaintQuad();
}
public PaintQuad() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException ex) {
} catch (InstantiationException ex) {
} catch (IllegalAccessException ex) {
} catch (UnsupportedLookAndFeelException ex) {
}
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(new PaintMyQuad());
frame.setSize(200, 200);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
public class PaintMyQuad extends JPanel {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g.create();
QuadCurve2D.Double curve = new QuadCurve2D.Double(50,100,100,170,150,100);
g2d.setColor(Color.RED);
g2d.draw(curve);
}
}
}
Two things come to mind.
- Make sure you've set the color of the graphics, the default is the back ground color of the pane
- Make sure that the size of your container is large enough (and is layout correctly) to show the graphics.
来源:https://stackoverflow.com/questions/13114483/how-can-i-draw-a-curved-line-segment-using-quadcurve2d-double