基于双精度(亚像素精度)的Java绘制线
我正在制作一个基本的Java程序,我想用基本的swing画一条线基于双精度(亚像素精度)的Java绘制线,java,swing,Java,Swing,我正在制作一个基本的Java程序,我想用基本的swing画一条线 有没有一种方法可以使这两点以双倍的形式出现,这样我就可以使输出更准确,或者有另一种方法更好?如果您参考了g,我假设它是图形对象,那么您应该使用Java 2D API Graphics2D g2 = (Graphics2D) g; g2.draw(new Line2D.Double(x1, y1, x2, y2)); Javadocs用于: 您可以使用((Graphics2D)g)绘制线条。绘制(形状)并将线条2D.Doub
有没有一种方法可以使这两点以双倍的形式出现,这样我就可以使输出更准确,或者有另一种方法更好?如果您参考了
g
,我假设它是图形
对象,那么您应该使用Java 2D API
Graphics2D g2 = (Graphics2D) g;
g2.draw(new Line2D.Double(x1, y1, x2, y2));
Javadocs用于:
((Graphics2D)g)绘制线条。绘制(形状)
并将线条2D.Double传递给它
下面是一个演示:
import javax.swing.*;
public class FrameTestBase extends JFrame {
public static void main(String args[]) {
FrameTestBase t = new FrameTestBase();
t.add(new JComponent() {
public void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
for (int i = 0; i < 50; i++) {
double delta = i / 10.0;
double y = 5 + 5*i;
Shape l = new Line2D.Double(5, y, 200, y + delta);
g2.draw(l);
}
}
});
t.setDefaultCloseOperation(EXIT_ON_CLOSE);
t.setSize(400, 400);
t.setVisible(true);
}
}
@为什么这么复杂的答案,而简单的一行就足够了?@Ringbear,因为未来的谷歌用户/访问者应该能够快速、轻松地判断这个答案是否适合他们的需要。对于与图形相关的问题和答案,屏幕截图通常是说明答案解决了什么问题的最佳方式。正如您在屏幕截图中所看到的,这没有任何区别。只有将它与g2.setRenderingHint(RenderingHints.KEY\u STROKE\u控件、RenderingHints.VALUE\u STROKE\u PURE)结合使用时,它才有效。
。见这个问题:
g2.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL,
RenderingHints.VALUE_STROKE_PURE)