【问题标题】:Java 2D Graphics - priority of items in paintComponentJava 2D 图形 - paintComponent 中项目的优先级
【发布时间】:2014-06-24 19:38:26
【问题描述】:

我有一个简单的问题。我是 Java 2D API 的新手,所以我的问题是:

是否可以手动设置在paintComponent()中绘制的东西的优先级?

【问题讨论】:

    标签: java graphics 2d paintcomponent java-2d


    【解决方案1】:

    你画的第一件事将是最远的。所以

    public void paintComponent(Graphics g) {
        g.drawRect(10, 10, 80, 30); // Drawn in back
        g.drawRect(20, 20, 70, 40); // Drawn in middle
        g.drawRect(10, 10, 10, 10); // Drawn in front
        ...
    }
    

    【讨论】:

    • 我希望调用一个函数,该函数将从绘制组件屏幕中删除所有内容,然后开始添加内容。但是,当我使用 clearRect() 函数时,它会清除屏幕,但我不会在上面绘制。
    • 你在调用 drawRect() 之前调用 clearRect() 对吗?
    【解决方案2】:

    如果你告诉 Java 先画一些东西,它会先被画出来,你在上面画的任何东西都会被画在你画的第一个东西上。

    【讨论】:

      【解决方案3】:

      您不能指定优先级,但可以指定绘制每个对象的顺序(在顺序代码中)。 Here 就是一个例子。

      public void paint(Graphics screen) {
          sortByDepth(screen);
          backFaceCulling(screen);
          applyProjection(screen);
          drawCube(screen);
      }
      

      以下书籍可以提供很大帮助:Introduction to Computer Graphics Using Java 2D and 3D。此外,如果你想画这样的东西,你可能想看看Visible Surface Determination

      另见:

      【讨论】:

        猜你喜欢
        • 2012-02-24
        • 2011-01-18
        • 2016-03-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-05
        • 1970-01-01
        相关资源
        最近更新 更多