我目前正在为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 次调用。