簡體   English   中英

在 JPanel 的一部分中進行繪制,而無需重新繪制其余部分

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM