2010-05-02 32 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方法之一?