我有一个椭圆形,我想为国际象棋贴上它的名字。我想使用椭圆形,并将其上的作品名称用作字符串,但是我似乎无法使其正常工作。
在形状上甚至可以绘制字符串吗?
我的密码
public void drawPieces(Graphics2D g2d){
for(int x = 0; x < 8; x++) {
for(int y = 0; y < 8; y++) {
//reds
if(board[x][y]==24){
g2d.setColor(Color.red);
g2d.fillOval(x*80, y*80, 80, 80);
//drawstring goes here
g2d.setColor(Color.blue);
g2d.drawString("test", x*80, y*80);
}
欢迎任何建议
编辑我的网格方法以防万一。
public void drawGrid(Graphics2D g2d){
g2d.drawLine(0, 0, 0, 639);
g2d.drawLine(0, 0, 639, 0);
g2d.drawLine(0, 639, 639, 639);
g2d.drawLine(639, 0, 639, 639);
// draw the horizontal lines using a loop from one to 7, coordiates of each line is (0, x*80, 640, x*80) also
// draw vertical lines with coordinates of (x*80, 0, x*80, 640)
for(int i = 1; i < 8; i++) {
g2d.drawLine(0, i*80, 640, i*80);
g2d.drawLine(i*80, 0, i*80, 640);
}
//drawing the black and white squares
for (int row = 0; row < 8; row++)
for (int col = 0; col < 8; col++) {
if ( (row % 2 == 0 && col % 2 == 0) || ( row % 2 == 1 && col % 2 == 1) ){
g2d.setColor(black);
g2d.fillRect(row*80,col*80,80,80);
}
}
}
最佳答案
我只能说可以在椭圆上画线,而我只是在自己的游戏中这样做。最上面的绘图代码应该没问题。您只需要检查传递给绘图方法的参数和if-condition。这是我绘制代码的节选
在椭圆上使用略有不同的方法,但是您也应该工作:
public void draw(Graphics g){
Graphics2D g2d = (Graphics2D) g;
g2d.fill(new Ellipse2D.Double(center.x, center.y, itemSize, itemSize));
g2d.setColor(Color.white);
g2d.setFont(new Font("Arial", Font.BOLD, 14));
g2d.drawString(itemName, (int)center.x, (int)center.y+18);
}
itemName是一些字符串,不要混淆前两个参数
g2d.fill(...(-,-,itemSize,itemSize))不是椭圆的中心,而是其矩形矩形的左上角。