[英]Paint in a part of JPanel without repaint the rest
我正在嘗試用 Java 制作一個策划者。 代碼並不難,但我想有一個非常好的界面。 我有一個 JPanel,它占用了我所有的 JFrame,我用 surchargind repaint()
方法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 的指定區域。
您可以將剪輯形狀設置為粗橢圓並填充它。
通過 BasicStroke 用粗線創建大橢圓形。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.