当前位置: 首页 > 面试题库 >

在BufferedImage中绘制多条线

诸葛雅达
2023-03-14
问题内容

我试图在bufferedimage上绘制水平和垂直线。它最终应该看起来像一个网格单元。但是,当我运行代码时,我只看到两行:最左边的行和最上面的行(即,从0,0到0,图像的高度和从0,0到图像的宽度,0的一行),这里是代码段:

  BufferedImage mazeImage = new BufferedImage(imgDim.width, imgDim.height, BufferedImage.TYPE_INT_RGB);
  Graphics2D g2d = mazeImage.createGraphics();
  g2d.setBackground(Color.WHITE);
  g2d.fillRect(0, 0, imgDim.width, imgDim.height);
  g2d.setColor(Color.BLACK);
  BasicStroke bs = new BasicStroke(2);
  g2d.setStroke(bs);
  // draw the black vertical and horizontal lines
  for(int i=0;i<21;i++){
   g2d.drawLine((imgDim.width+2)*i, 0, (imgDim.width+2)*i,  imgDim.height-1);
   g2d.drawLine(0, (imgDim.height+2)*i, imgDim.width-1, (imgDim.height+2)*i);
  }

和覆盖的绘制方法:

public void paint(Graphics g) {
  g.drawImage(mazeImage, 0, 0, this);
}

所有这些都在扩展了JPanel的名为RobotMaze的类中。任何帮助表示赞赏。


问题答案:
import java.awt.*;
import java.awt.image.*;
import javax.swing.*;

class GridLines {

    public static void main(String[] args) {

        Dimension imgDim = new Dimension(200,200);
        BufferedImage mazeImage = new BufferedImage(imgDim.width, imgDim.height, BufferedImage.TYPE_INT_RGB);


        Graphics2D g2d = mazeImage.createGraphics();
        g2d.setBackground(Color.WHITE);
        g2d.fillRect(0, 0, imgDim.width, imgDim.height);
        g2d.setColor(Color.BLACK);
        BasicStroke bs = new BasicStroke(2);
        g2d.setStroke(bs);
        // draw the black vertical and horizontal lines
        for(int i=0;i<21;i++){
            // unless divided by some factor, these lines were being
            // drawn outside the bound of the image..
            g2d.drawLine((imgDim.width+2)/20*i, 0, (imgDim.width+2)/20*i,imgDim.height-1);
            g2d.drawLine(0, (imgDim.height+2)/20*i, imgDim.width-1, (imgDim.height+2)/20*i);
        }

        ImageIcon ii = new ImageIcon(mazeImage);
        JOptionPane.showMessageDialog(null, ii);
    }
}


 类似资料:
  • 我想创建一个包含三条线(男性、女性、未知)的折线图。这是我的数据示例: 是否有一个选项,在图中自动创建三行或我需要循环通过数据和创建三个跟踪自己?到目前为止,这是我的代码:

  • 我用鼠标光标制作了一个游戏,我想用绿色版本的图像覆盖光标来表示健康状况,但只有与健康百分比相对应的几何部分。来自以下帖子的解决方案:在java中绘制圆的切片? 简而言之,给定任何角度,如何绘制BuffereImage的扇区?

  • 问题内容: 在Windows上运行的某些Java代码中,我正在从磁盘读取一些大的RGB数据块,并希望尽快将其显示在屏幕上。RGB数据是每个通道8位,没有任何alpha。目前,我具有类似以下的代码来创建BufferedImage。 问题在于将其呈现到屏幕的性能非常慢。大约250-300毫秒。我读过,为了获得最佳性能,您需要在与屏幕兼容的BufferedImage中显示。为此,我将从上述方法返回的缓冲

  • 本文向大家介绍android绘制多个黑竖线条,包括了android绘制多个黑竖线条的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了android绘制多个黑竖线条展示的具体代码,供大家参考,具体内容如下 1.写一个LinearLayout的布局,将宽度写成5dp将高度写成match_parent. 2.在写一个类继承LinearLayout,用LayoutInflater实现子布局的在

  • 我正在尝试使用swing制作一个rpg(是的,这是愚蠢的,我同意,但我这样做是为了学习,而不是实际的工作产品)。目前我正在研究每个角色的统计。 我有一个JPanel,我想画一条线。 左侧是一个JPanel,它有两个组件:表1和JLabel。右侧也是JPanel,它有自己的元素,但那是另一回事了。 我的问题是,我想创建一个只有一个图像的jpanel,该图像将是两行,与表中选定的元素相关。 但不幸的是

  • 我正在尝试调整图像大小,将其另存为BuffereImage。如果不缩放图像,效果很好。 在下面的代码中,文件名被传入并转换为buffereImage。使用