gpt4 book ai didi

java - 在 JPanel 的一部分中绘制而不重新绘制其余部分

转载 作者:搜寻专家 更新时间:2023-10-31 20:30:08 25 4
gpt4 key购买 nike

我正在尝试用 Java 制作 Mastermind。代码并不难,但我想要一个非常好的界面。我有一个 JPanel,它占用了我所有的 JFrame,我用 surchargind repaint() 方法绘制这个 JPanel:

//method to draw elements on the map
public void paint(Graphics g) {
super.paintComponents(g);
Graphics gr;
gr = MasterMindPane.getGraphics();

img = MasterMindPane.getToolkit().getImage("images/plateau4-8.jpg");
gr.drawImage(img, 0, 0, 600, 720, this);

gr = bouleRougePane.getGraphics();
img = bouleRougePane.getToolkit().getImage("images/bouleRouge.png");
//gr.drawImage(img, 535, 303, 45, 45, this);
gr.drawImage(img, 0, 0, 45, 45, this);
gr = bouleOrangePane.getGraphics();
img = bouleOrangePane.getToolkit().getImage("images/bouleOrange.png");
//gr.drawImage(img, 535, 303, 45, 45, this);
gr.drawImage(img, 0, 0, 45, 45, this);
}

当我点击一张有面板的图片时,我会画一个这样的黄色圆圈:

private void bouleRougePaneMouseClicked(java.awt.event.MouseEvent evt) {                                            
Graphics2D g2d = (Graphics2D) MasterMindPane.getGraphics();

for(int i = 0; i<4; i++)
{
g2d.setColor(Color.ORANGE);
g2d.setStroke(new BasicStroke(3));
g2d.drawOval(78+i*70, 106+etape*50, 35, 35);
}
}

当我选择一个洞时,我想删除圆圈,它只表示玩家可以玩的地方。

但我不知道如何删除圆圈或只重绘图像的一部分,因为重新绘制全部的成本很高。

最佳答案

一个非常简单的方法是使用paintImmediately(x,y,w,h);

这只会重绘从像素 (x,y) 开始、宽度为 w、高度为 h 的指定区域。

关于java - 在 JPanel 的一部分中绘制而不重新绘制其余部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9668564/

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