Java:在 Graphics 中使用 setClip 会更有效吗?
Posted
技术标签:
【中文标题】Java:在 Graphics 中使用 setClip 会更有效吗?【英文标题】:Java: Would using setClip in Graphics be more efficient? 【发布时间】:2012-04-05 17:57:54 【问题描述】:我有一个屏幕外的BufferedImage
,太大而无法一次显示。所以我使用getSubimage
来绘制整个图像的一部分。我想知道在Graphics
上使用setClip
是否会使用更少的资源。文档说“渲染操作在剪切区域之外没有影响”。如果我使用剪辑与不使用剪辑会有多大区别?
【问题讨论】:
【参考方案1】:当您在Graphics
对象上设置剪辑时——例如Rectangle(0, 0, 100, 100)
——
然后用相同的Graphics
对象绘制图像
– 例如,尺寸为 300x300 的图像 –
位于剪辑之外的图像部分被省略。只会绘制示例的左上角 100x100 角。
这样做的主要优点是,它大大加快了绘图过程。我不太确定 如何 它让它更快;事实上,我现在正在查找这个。
无论如何,我发现这在设计全屏游戏时非常方便。您制作的剪辑绘制到屏幕上的效率越高,您的游戏运行就越流畅。当一段时间内没有更新屏幕组件时,剪辑将保持空白,不绘制任何内容,并为游戏逻辑留下资源。
【讨论】:
还有一个提示:Area 对象也可以用作剪辑。可以添加、减去、相交等区域。这样您就可以按照自己喜欢的方式构建剪辑。 有谁知道加速是剪辑面积还是边界框面积的函数? (考虑 drawImage(..)。)以上是关于Java:在 Graphics 中使用 setClip 会更有效吗?的主要内容,如果未能解决你的问题,请参考以下文章
Java AWT 图形界面编程Canvas 组件中使用 Graphics 绘图 ② ( AWT 绘图步骤 | Graphics 绘图常用 API )
Java AWT 图形界面编程Canvas 组件中使用 Graphics 绘图 ② ( AWT 绘图步骤 | Graphics 绘图常用 API )