【发布时间】:2013-05-14 04:08:38
【问题描述】:
假设我们有以下代码:
(在扩展 JPanel 的类中):
public void paintComponent(Graphics g) {
g.drawImage(image, dx1, dy1, dx2, dy2, sx1, sy1, sx2, sy2, null);
}
如果dx1 和dy1 为负数或dx2 和dy2 大于JPanel 的宽度(换句话说,部分图像将在屏幕外),@987654328 @调整渲染的内容,使其仅“关注”JPanel 上可见的部分?我对此感到好奇,因为如果我在JPanel 上绘制一个非常大的图像,paintComponent() 可能会变慢。
【问题讨论】:
-
Graphics 对象有一个“剪辑”集。我相信默认是组件边界。
-
试试这样的。将剪辑区域设置为小于可见区域,在其上绘制一些东西,然后重置剪辑并绘制其他东西,看看你得到了什么
-
g.drawImage(image, dx1, dy1, dx2, dy2, sx1, sy1, sx2, sy2, null);应该是g.drawImage(image, dx1, dy1, dx2, dy2, sx1, sy1, sx2, sy2, this); -
观察者到底为我做了什么?
-
ImageObserverAPI 是怎么说的?
标签: java swing jpanel implementation paintcomponent