目标:显示光标位置的图像(放大)
要实现我想要的功能,我需要在获取屏幕快照之前删除当前显示的GUI元素。然后重新绘制GUI元素。
当前方法:在鼠标移动/拖动时调用 repaint()
。然后在重新绘制GUI的其余部分之前绘制光标位置图像。
问题:在光标位置图像中,即使在调用createScreenCapture()
时仍未重绘,GUI仍显示...试图使面板不可见以解决此问题,但是会出现相同的问题。
override fun paint(g: Graphics?) {
super.paint(g)
val g2d = g as Graphics2D
zoom(g2d)
when {
currentX > initX && currentY > initY -> redraw(g2d, initX, initY, currentX-initX, currentY-initY)
currentX > initX && currentY < initY -> redraw(g2d, initX, currentY, currentX-initX, initY-currentY)
currentX < initX && currentY < initY -> redraw(g2d, currentX, currentY, initX-currentX, initY-currentY)
currentX < initX && currentY > initY -> redraw(g2d, currentX, initY, initX-currentX, currentY-initY)
}
}
private fun zoom(g2d: Graphics2D) {
val capture = robot.createScreenCapture(Rectangle(currentX - 50, currentY - 50, 100, 100))
g2d.drawImage(capture, null, currentX, currentY)
}
currentX
/ Y
是当前鼠标位置。