gpt4 book ai didi

java - 如何在具有撤消功能的缓冲区上绘制?

转载 作者:搜寻专家 更新时间:2023-11-01 02:14:31 24 4
gpt4 key购买 nike

虽然我不是在做一些动画或者画一个非常复杂的图形。
我需要(某种程度上)双缓冲来绘制多个图元。在应用程序中,用户输入 Shape 的名称,然后输入相关参数,然后在缓冲区上绘制该形状,然后在屏幕上绘制。例如,命令是 RECT 100, 50, 200, 120

为了持久化,我可以将所有命令存储在列表和
public void paintComponent(Graphics g) JPanel的我一一画出来。
但这是非常低效的,因为每次都要遍历列表并使用 HashMap 来调用(或分派(dispatch))相关的形状绘制接口(interface)。

我可以如何以及在什么类型的缓冲区上绘制?不同的方法如何利用这个缓冲区?

此外,是否有一种方便的方法可以撤消以前使用缓冲区绘制的内容?或者每次撤消完成时我都需要在缓冲区上重绘吗?

谢谢,我不想要完整的代码,但是相关的类名和小的伪代码是值得赞赏的。

最佳答案

JPanel 默认情况下是双缓冲的,因此选择和拖动通常非常流畅。 GraphPanel 是一个简单的对象绘图程序,说明了 List<Node> 上的此类操作.类似的方法已成功用于数千个节点。

实现撤消 策略的细节在很大程度上取决于所需的行为,但是remove()repaint()是有效的。

附录:渲染大量对象的一种常见优化使用 flyweight pattern . JTable , JFreeChart JGraph 是例子。这简化了 example 说明了基 native 制。

关于java - 如何在具有撤消功能的缓冲区上绘制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9347689/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com