【问题标题】:Simplest way to draw primitives in Java (not OpenGL)在 Java(不是 OpenGL)中绘制图元的最简单方法
【发布时间】:2010-05-20 08:14:04
【问题描述】:

刚开始熟悉 Java 中的图形。

在没有 OpenGL (JOGL) 的情况下在 Java 中绘制图元(线条、矩形)的最简单方法是什么?

寻找putPixellineTo等方法

UPD。
在哪里画?帆布?控制板?位图?

【问题讨论】:

    标签: java graphics


    【解决方案1】:

    内置接口称为“Graphics2D”。

    这里是 Java Graphics2D 教程的链接:http://java.sun.com/docs/books/tutorial/2d/index.html

    【讨论】:

    • 感谢您添加链接,安迪。
    【解决方案2】:

    您可以通过 paint 方法从任何 AWT/Swing 组件中获取 Graphics/Graphics2D 实例。 JPanel 可能是最好的,因为它非常适合swing 并且是轻量级的,这意味着只创建一个本机窗口- 用于顶级窗口。 Swing 组件也可以是双缓冲的,这意味着绘画首先在屏幕外缓冲区完成,然后再传输到屏幕。这样可以提供更平滑的外观并避免直接在屏幕上绘画时可能发生的闪烁,这对于流畅的动画尤为重要。

    您可以专门绘制到您可以在之后使用的屏幕外缓冲区(“位图”),例如绘制图像以便稍后保存为文件:

       BufferedImage offImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
       Grapics2D g2 = offImg.createGraphics();
    
        // .. optionally set attributes ..
        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    

    【讨论】:

      【解决方案3】:

      我最近关于 Java 水平滚动的问题包括一个很小的图形示例源代码,您可以将其用作工作的基础。有 AWT 和 Swing 实现。 AWT 不支持水平滚动,所以我将使用 swing。

      不推荐这些作为最佳实践或任何东西,它们是我特定问题的快速演示,但它可能足以让你开始。

      链接是How to use my trackpad for horizontal mousewheel scrolling in a Java AWT ScrollPane

      【讨论】:

        【解决方案4】:

        原始的 Java 用户界面类称为 AWT。这些是“重量级”组件,有时在不同的系统(Windows、Mac、Unix)上表现不同。这些组件很难用于制作 GUI。

        Sun 开发了 Swing,它是一组“轻量级”组件,可以最大限度地在不同系统上工作相同。这些组件使 GUI 开发变得更加容易。

        为了有一个图形画布,你从一个 javax.swing.JFrame 开始。您将子 javax.swing.JPanel 添加到 JFrame。您可以通过覆盖 paint 方法在 JPanel 上绘图。

        JPanel 绘制方法将 java.awt.Graphics 作为输入。您可以将 Graphics 转换为 java.awt.Graphics2D。 Graphics2D 的方法允许您绘制矩形、图像、文本、线条和任意多边形。

        您可以通过阅读 Sun 的 Creating a GUI with JFC/Swing 教程了解更多关于 Swing 的信息。您可以通过阅读 Sun 的 2D Graphics 教程了解有关 2D 图形的更多信息。有关我提到的 Java 类的更多详细信息,请参阅Javadoc

        【讨论】:

        • “覆盖打印方法” - 我认为您的意思是“绘制方法”。
        • 你是对的。我已经更正了我的答案。感谢您指出错误。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多