Implementing the java.awt.Graphics class



我目前正在为LCD编写一个库。我选择在 Java 中扩展 Graphics 类,以便用户可以更方便地绘制到 LCD。

但是,编写/覆盖这些方法是非常耗费脑力的工作。我刚刚使用布雷森汉姆线算法和fillRect(),clearRect()成功地实现了drawLine(),用黑白填充像素。但似乎它几乎要了我的命。

我已经看了一下带有 Graphics 类的原始实现:嗯,这是抽象的。XD 未实现任何内容

摇摆也没有希望。实现似乎取决于平台。

Graphics 类是否有任何源代码,以便我可以查看实现?

或者这真的是一项愚蠢的工作?

您可以在完整的 OpenJDK Java 源代码树中找到 Graphics 类的各种实现,其中可以从官方 openjdk 站点获得。 查看 Java 8 源代码下载页面。

不管你怎么做,实现一个新的Graphics类将是大量的工作。 但我不准备说这是一件"愚蠢"的事情。 这取决于你为什么要这样做;即努力是否会"花得值"。 只有您可以拨打该电话。

我会在图形类的实现中放一个图像。并使用 getGraphics() 获取图形并将方法挂接到其中

public SampleGraphics extends Graphics2D{
    private final Graphics2D g2d;
    private final BufferedImage buffImg;
    public SampleGraphics(String someargs){
        //Perform things...
        buffImg = .....
        g2d = buffImg.getGraphics();
    }
    @Override
    public Graphics create(){
        return g2d.create();
    }
    //...each method identical to the Graphics2D g2d
}

这是非常愚蠢的工作。

  • 它已经完成了。

  • 如果你在逐个像素的基础上工作,那么你的工作水平是错误的。

  • 出于性能原因,这应该通过硬件加速来完成,尽可能使用 openGL。

  • 即使没有,也应该通过下降到C并直接访问VRAM来完成,而不是在Java级别。 将屏幕设置为黑色变为对内存集的 1 次调用。

相关内容

  • 没有找到相关文章

最新更新