2011-05-13 63 views
0

我還有一個問題,這也是額外的功勞,而不是功課。這一次我需要使用java2d創建一個邊框。這些指令是... 編寫一個名爲drawRectangleBorder的方法,該方法具有六個不使用圖形包的參數。它繪製了一個矩形邊框,從前兩個參數給出的x和y座標開始,具有由第三個和第四個參數給出的寬度和高度,由第六個參數給出的第五個參數給出的邊界寬度。參數列表是:x,y,寬度,高度,邊框寬度,顏色關於用java2D繪圖的問題

我用前面的方法創建了一個圖片外圍的邊框,但是我現在可以做的最好的方法是分散對象框。最新的版本不會顯示任何

public void drawRectangleBorder(
     int x, int y, int width, int height, int border, Color newColor) { 
    int startX = 0; 
    int startY = 0; 

    // top and bottom 
    for (startX = x; x < width; x++) { 
     for (startY = y; y < border; y++) { 
      // top pixel 
      this.getPixel(startX, startY).setColor(newColor); 
      // bottom pixel 
      this.getPixel(startX + width, startY + height).setColor(newColor); 
     } // for-y 
    } // for-x 

    // left and right 
    for (startX = x; x < border; x++) { 
     for (startY = y; y < height; y++) { 
      // left pixel 
      this.getPixel(startX, startY).setColor(newColor); 
      // right pixel 
      this.getPixel(startX + width, StartY + height).setColor(newColor); 
     } // for-y 
    } // for-x 

    return; 
} // end drawRectangleBorder 

我再次感謝你對任何輸入。

+0

我認爲,額外的信貸仍然被列爲功課^^(如果我貼不利於和別人飛往救援,你能更詳細一點你這個對象是什麼) – 2011-05-13 01:59:04

+0

是什麼'this'? – trashgod 2011-05-13 02:02:48

+0

「這個」是該方法應用到的圖片。即pic1.drawRectangleBorder(1,2,3,4,5,6)或pic2.drawRectangleBorder(1,2,3,4,5,6)。 – Doug 2011-05-13 02:22:15

回答

0

您可以改變java.awt.BufferedImage中的像素,如here所示。

0

我可能是太困了,但我覺得你忘記設置像素背到這個(無論這是^^)

我猜this.getPixel發送你的背部副本,所以你可能想要做的像

Pixel p = this.getPixel(startX, startY); 
p.setColor(newColor); 
this.setPixel(startX, startY, p); 
+0

你不需要方法調用前面的'this'。它不表示任何東西。 – 2011-05-13 02:03:57

+0

@Steve Kuo:在這種情況下,認爲它被用作任何'this'的佔位符,可能是指導者爲['WritableRaster']提供的包裝器(http://download.oracle.com/javase /6/docs/api/java/awt/image/WritableRaster.html)。 – trashgod 2011-05-13 02:15:21

+0

@Steve Kuo:我只把這個放在它的問題上,因爲它如何寫在問題^^ – 2011-05-13 02:19:44