Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于双精度(亚像素精度)的Java绘制线_Java_Swing - Fatal编程技术网

基于双精度(亚像素精度)的Java绘制线

基于双精度(亚像素精度)的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

我正在制作一个基本的Java程序,我想用基本的swing画一条线


有没有一种方法可以使这两点以双倍的形式出现,这样我就可以使输出更准确,或者有另一种方法更好?

如果您参考了
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)