2010-05-02 35 views
0

我創建了我施加到矩形作爲填充圖案用來塑造S.如果我變化看的位置一個BufferedImage,填充圖案與它的變化而不是保持「固定」。會是什麼呢?填充模式隨對象位置而變化。爪哇

圖片:(該模式是一個3條,都具有相同的縱橫比):alt text http://img88.imageshack.us/img88/8524/imageby.png

if (bannerPatternCreated == false) { 

     banner = new BufferedImage(size * 3, size * 3, BufferedImage.TYPE_INT_RGB); 
     Graphics2D gc = banner.createGraphics(); 


     System.out.println("Creating banner..."); 

     gc.setColor(Color.black); 
     gc.fillRect(0, 0, size, size * 3); 

     gc.setColor(Color.BLUE); 
     gc.fillRect(size, 0, size, size * 3); 

     gc.setColor(Color.WHITE); 
     gc.fillRect(size * 2, 0, size, size * 3); 
     gc.dispose(); 
     bannerPatternCreated = true; 

    } 

    Rectangle patternPencil = new Rectangle(size, size); 
    g2.setPaint(new TexturePaint(banner, patternPencil)); 

    Rectangle recto = new Rectangle(presentX-size, presentY-size, size, size); 
    g2.fill(recto); 
+0

如何一點點的代碼? – 2010-05-02 04:55:39

回答

1

它看起來像紋理位置是固定的,所以當你移動recto時,你只能看到底層無限重複紋理的不同視圖。

如果你改變了patternPencil RECT是相同的大小/位置recto,我認爲它應該得到整理:

Rectangle patternPencil = new Rectangle(presentX-size, presentY-size, size, size); 
0

我認爲TexturePaint文檔指出爲什麼該問題:

...的紋理固定在用戶空間中指定的Rectangle2D 的左上角 。 紋理計算在 設備空間中的位置由概念 在各個方向上覆制指定的矩形 無限

這是因爲如果你是矩形從0,0畫和複製一遍又一遍,並可見部分是通過撥打g2.fill打開的小「窗口」。

如果您繪製在畫布型組件,可你只是使用在適當的X,Y的Graphics.drawImage方法之一?