当前位置: 首页 > 面试题库 >

java + Swing:矩形或其他“精灵”的有效覆盖

商业
2023-03-14
问题内容

我不太确定该如何表达,因此请耐心等待。

我有两个JPanelS
IN的容器JPanelOverlayLayout。无论JPanel■在容器覆盖paint(Graphics)

底部JPanel是不透明的,并绘制了一些相当复杂的图形,因此渲染需要很长的时间(10或100毫秒)。

顶部JPanel是透明的,仅根据鼠标输入绘制矩形,直线或简单形状,因此速度非常快。

有什么方法可以进行设置,以便在上面板中更改简单形状时不会重绘下面板? (例如,它以某种方式缓存了底部面板)

我对bitblt,双缓冲和XOR绘图等概念有些陌生,但并不确定要在这里应用什么。


问题答案:

最好使用一个JComponent并创建一个BufferedImage来存储底部图像。当该paintComponent操作发生在时JComponent,您只需将底部图像变暗,然后使用该Graphics对象在该图像之上进行任何进一步的绘制(从存储状态开始)。应该相当有效率。

BufferedImage正如其他海报所提到的那样,您需要在另一个线程中对底部进行复杂的绘制操作(偶然省略,抱歉:)。但是,您不希望在该图像上引起争用,因此您必须BufferedImage为此存储一个附加对象,并在完成绘制操作的那一刻将其与其他图像同步化。



 类似资料:
  • 我在Android Studio中使用libgdx,并且我正在使用精灵碰撞检测。我需要知道如何检测两个形状不规则的精灵之间的碰撞。我的精灵是从png图像纹理创建的。是否可以使用子画面的边框作为检测表面?使用在子画面周围绘制的矩形或圆形将不够准确。感谢您的帮助!

  • 一些关于精灵的其他知识 目前为止你已经学会了如何用相当多有用的精灵的属性,像x, y, visible, 和 rotation ,它们让你能够让你很大程度上控制精灵的位置和外观。但是Pixi精灵也有其他很多有用的属性可以使用。 这是一个完整的列表 Pixi的类继承体系是怎么工作的呢?(什么是 类 , 什么是 继承?点击这个链接了解.)Pixi的精灵遵循以下原型链构建了一个继承模型: Display

  • 我想一起旋转一组精灵,多边形和矩形,图a)显示2个精灵,边界多边形和矩形,这组围绕大矩形中心旋转90度(两个矩形的联合)。 以下代码创建图b)。它不会围绕联合矩形的中心旋转精灵和多边形。 下面的代码创建了图c)。当我试图将精灵和多边形移动到矩形位置时,出现了对齐错误。 问题是旋转后如何将精灵与矩形对齐(即类似于图a,角度=0)。提示:问题出现是因为精灵在绘制时会旋转,因此精灵和矩形之间会错位对齐。

  • 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 第2*n个矩形的覆盖方法等于第2*(n-1)加上第2*(n-2)的方法。 f = lambda n: 1 if n < 2 else f(n - 1) + f(n - 2)

  • 题目链接 NowCoder 题目描述 我们可以用 2*1 的小矩形横着或者竖着去覆盖更大的矩形。请问用 n 个 2*1 的小矩形无重叠地覆盖一个 2*n 的大矩形,总共有多少种方法? 解题思路 当 n 为 1 时,只有一种覆盖方法: 当 n 为 2 时,有两种覆盖方法: 要覆盖 2*n 的大矩形,可以先覆盖 2*1 的矩形,再覆盖 2*(n-1) 的矩形;或者先覆盖 2*2 的矩形,再覆盖 2*(

  • 多边形精灵(Polygon Sprite) 也是一个精灵,同样是为了展示一个可以被控制的图像,但是和普通精灵的区别是,普通精灵在绘图处理中被分为了两个三角形,多边形精灵则是被分为了一系列三角形。 为什么要使用多边形精灵 提高性能! 要深入分析这个是如何提高性能的,会需要很多和像素填充率有关的技术术语。幸好本节是入门性质的文档,能让大家理解多边形精灵比普通精灵性能好就可以了,不用讨论特定宽高矩形绘制