GridBagLayout と GridBagConstraints を使用してマップ (テクスチャのグリッド) を作成しています
しかし今、異なるテクスチャの間にエッジを挿入したい: 私はこのようなものが欲しい
|-----|-----|-----|
|-----|-----|-----|
|----|-|----|-----|
|-----|-----|-----|
私が試してみました:
c.gridx = i*5;
c.gridy = j*5;
c.gridwidth = 5;
c.gridheight = 5;
if(right != null && right != currentTexture)
c.gridwidth--;
if(left != null && left != currentTexture){
c.gridx = i*5+1;
c.gridwidth--;
}
しかし、私はこれを取得しています:
同じテクスチャを使用していますが、エッジの 1 つの位置を切り取ってほしい
@ Code-Guru ご関心をお寄せいただきありがとうございます。問題を解決する別の方法を見つけました。つまり、BufferedImage で画像を切り取ります。変更をコードに投稿します。
ImageIcon tile = //get texture ...
Image img = tile.getImage();
BufferedImage buff = new BufferedImage(tile.getIconWidth(),tile.getIconHeight(), BufferedImage.TYPE_INT_RGB);
Graphics2D g = buff.createGraphics();
g.drawImage(img,0,0,null);
int w = tile.getIconWidth(), h = tile.getIconHeight();
int x = 0, y = 0;
c = new GridBagConstraints();
c.gridx = i*10;
c.gridy = j*10;
c.gridwidth = 10;
c.gridheight = 10;
c.fill = GridBagConstraints.NONE;
if(right != null && right != texture){
//c.gridwidth--;
c.anchor = GridBagConstraints.WEST;
w -= (int)(res.ordinal()*2.5+2.5);
}
if(left != null && left != texture){
//c.gridx = (i*10)+1;
//c.gridwidth--;
x = (int)(res.ordinal()*2.5+2.5);
w -= (int)(res.ordinal()*2.5+2.5);
if(c.anchor == GridBagConstraints.WEST)
c.anchor = GridBagConstraints.CENTER;
else
c.anchor = GridBagConstraints.EAST;
}
BufferedImage buff2 = buff.getSubimage(x, y, w, h);
JLabel l = new JLabel(new ImageIcon(buff2));
globalMap.add(l, c);