java - 光栅与绘制(g),绘制组件(g)

标签 java graphics paintcomponent raster

我是一名新手程序员,最近我遇到了很多动画方法:

  1. 使用 BufferedImages ,即。使用双缓冲或三缓冲方法绘制图像并显示。
  2. 通过扩展 Component 或 Button 来制作我的 Sprite 组件。并通过repaint(g)重新绘制。
  3. 光栅化,使用光栅和整数数组、位图等。

我意识到方法1和2很相似,因为它们使用paint()方法,但是光栅化涉及自制函数,例如创建通过遍历代表每个像素的整个数组并将颜色设置为所需颜色来设置背景的函数。

我在网上看到很多人使用栅格方法尽管 1 和 2 看起来更简单。

请大家帮帮我,告诉我应该走哪条路以及为什么。

最佳答案

第一种方法和第二种方法非常相似,都取决于问题的上下文。

第三个选项在很大程度上归结为提供一个灵活的 API,该 API 独立于用于显示它的工具包或框架。有人可能会说速度有所提高,但随着 Swing 和 JavaFX 更直接地与 DirectX 和 OpenGL 管道一起工作,这不再是一个问题。

除非您计划使用一些严重低级的功能或与非标准 API 接口(interface),否则我不会太担心(某些效果绘制可能会通过这种方式更快地完成,但这完全取决于上下文)

就个人而言,它将侧重于加深对所涉及的基础知识和原则的理解,以及如何使用前两个选项来实现它们,因为它允许您使用相对简单的 API 专注于这些概念

随着时间的推移或者您遇到使用这些技术无法解决的情况,那么可能是时候考虑使用光栅方法了。

但请记住,您仍然需要将该字节数组转换为 API 所需的格式,这本身就会增加开销

关于java - 光栅与绘制(g),绘制组件(g),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24014100/

相关文章:

java - 使用 Glide 在 ImageView 中加载图像

java - 监控 mysql 的变化

java - Java 与 Python 在 2D 图形、用户脚本方面的优势

java - 我的绘画方法部分有效。我的循环内的绘图命令不执行。我该如何解决这个问题?

java - 使用变量作为 x、y 参数在面板中以圆为中心

java - 当值在java/servlets中有空格时读取复选框的值

java - Java JVM 中的内存交换到磁盘

python - 减小矢量化等高线图的大小

java - 为 createWritableChild 切割图像 IllegalArgumentException

java - 为什么我不能在我的 JFrame 上使用 "draw"?