Java 图形绘制图像双陆棋游戏
这可能是一个愚蠢的问题,但我只是一个初学者,所以请宽恕我的灵魂:)。 所以我的问题是我有一个名为game page的类,它是显示所有游戏的IFrame。 在它里面,我得到了一个叫做Board的类,其中包含一张Board的图片,它使用以下方法将自己画得很好:Java 图形绘制图像双陆棋游戏,java,image,swing,graphics,paintcomponent,Java,Image,Swing,Graphics,Paintcomponent,这可能是一个愚蠢的问题,但我只是一个初学者,所以请宽恕我的灵魂:)。 所以我的问题是我有一个名为game page的类,它是显示所有游戏的IFrame。 在它里面,我得到了一个叫做Board的类,其中包含一张Board的图片,它使用以下方法将自己画得很好: public void paintComponent(Graphics page) { super.paintComponent(page); page.drawImage(image, 0, 0, null); } 图像是电路板的
public void paintComponent(Graphics page)
{
super.paintComponent(page);
page.drawImage(image, 0, 0, null);
}
图像是电路板的图像,我得到的图像如下:
image = ImageIO.read(new File("pics/board.png"));
好的,很好。
所以在电路板内部,我还得到了一个“Slot”类型的2d数组,Slot是我写的另一个类,它有一堆白色的或黑色的
这些是我写的代表黑板上黑白部分的类
因此,在Board类中有一个称为reset Board的方法,该方法将其组织到双陆棋的起始位置,以便初始化所有插槽
现在黑白片在字体图像的内部有一张图片,我得到的是这样的:
pic=ImageIO.read(新文件(“pics/whitePiece.png”)
现在的问题是,在reset board内部,我从Slot类调用drawSlot方法
我想它拍不到这张照片。
我这样称呼它:
首先我称之为drawBoard:
抽油板
然后是抽绳板:
public void drawBoard(Slot[][] board) throws IOException{
for(int i=0;i<2;i++){
for(int j=0;j<12;j++){
board[i][j].drawSlot(getGraphics());
}
}
}
public void drawBoard(插槽[][]板)引发IOException{
对于(int i=0;i不要在swing组件上使用getGraphics()
。在paintComponent()
中绘制插槽
并修改drawBoard()以使用传递的图形对象:
public void drawBoard(Graphics g, Slot[][] board) {
for(int i=0;i<2;i++) {
for(int j=0;j<12;j++){
board[i][j].drawSlot(g);
}
}
}
public void绘图板(图形g,槽[]板){
对于(int i=0;i不要在swing组件上使用getGraphics()
。在paintComponent()
中绘制插槽
并修改drawBoard()以使用传递的图形对象:
public void drawBoard(Graphics g, Slot[][] board) {
for(int i=0;i<2;i++) {
for(int j=0;j<12;j++){
board[i][j].drawSlot(g);
}
}
}
public void绘图板(图形g,槽[]板){
对于(int i=0;i1)为了更快地获得更好的帮助,请在句子开头添加一个大写字母。请在单词i中使用大写字母,以及缩写和首字母缩略词,如JEE或WAR。这使人们更容易理解和帮助。3)对代码块使用一致的逻辑缩进。代码缩进旨在帮助人们理解程序流程。4)如前所述,不要调用组件上的getGraphics()
。5)更改g.drawImage(pic,5,i*30,null);
为g.drawImage(pic,5,i*30,this)
对于所有的图像绘制。1)为了更快地获得更好的帮助,请在句子的开头添加一个大写字母。还请在单词I的开头使用大写字母,以及缩写和首字母缩略词,如JEE或WAR。这使人们更容易理解和帮助。3)对代码块使用一致且符合逻辑的缩进e代码旨在帮助人们理解程序流程。4)如前所述,不要对组件调用getGraphics()
。5)更改g.drawImage(pic,5,i*30,null);
为g.drawImage(pic,5,i*30,this)
用于所有图像绘制。@GiladBenYe我更新了一点答案,以便将图形正确地传递到drawBoard()
好的,我的应用程序中的情况开始好转,我仍然需要进行定位。@GiladBenYe我更新了一点答案,以便将图形正确地传递到drawBoard()
好的,我的应用程序开始变得更好了,我还需要定位。
public void paintComponent(Graphics page) {
super.paintComponent(page);
page.drawImage(image, 0, 0, null);
drawBoard(page, board);
}
public void drawBoard(Graphics g, Slot[][] board) {
for(int i=0;i<2;i++) {
for(int j=0;j<12;j++){
board[i][j].drawSlot(g);
}
}
}