Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用BuffereImage在画布上绘制像素,但不填充整个画布_Java - Fatal编程技术网

Java 使用BuffereImage在画布上绘制像素,但不填充整个画布

Java 使用BuffereImage在画布上绘制像素,但不填充整个画布,java,Java,我正在尝试使用BuffereImage在画布上绘制像素。在画布构造函数中,我正在初始化图像和像素数组,如下所示: public MyCanvas() { Dimension size = new Dimension(WIDTH, HEIGHT); setSize(size); setPreferredSize(size); setMinimumSize(size); setMaximumSize(size); image = new Buffer

我正在尝试使用BuffereImage在画布上绘制像素。在画布构造函数中,我正在初始化图像和像素数组,如下所示:

public MyCanvas() {
    Dimension size = new Dimension(WIDTH, HEIGHT);
    setSize(size);
    setPreferredSize(size);
    setMinimumSize(size);
    setMaximumSize(size);

    image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
    pixels = ((DataBufferInt) img.getRaster().getDataBuffer()).getData();
}
我通过以下操作绘制每个渲染:

private void render() {
    BufferStrategy bs = getBufferStrategy();
    if (bs == null) {
        createBufferStrategy(3);
        return;
    }

    for (int i = 0; i < pixels.length; i++) {
        pixels[i] = 0xFFFFFF;
    }

    Graphics g = bs.getDrawGraphics();
    g.fillRect(0, 0, getWidth(), getHeight());
    g.drawImage(img, 0, 0, WIDTH, HEIGHT, null);
    g.dispose();
    bs.show();
}


让它达到我的期望。但是,我不明白为什么我自己设置了画布大小(宽度、高度),但它似乎与我给它的大小不一样。我看不出你在哪里设置矩形填充的颜色

试试这个:

Graphics g = bs.getDrawGraphics();
// g.setColor(Color.WHITE);
// g.fillRect(0, 0, getWidth(), getHeight());
g.drawImage(img, 0, 0, getWidth(), getHeight(), null);
g.dispose();
bs.show();

这样做的目的不是用白色像素填充整个画布,但我担心它不会绘制整个画布。我更改了drawImage参数。这应该是整个画布,无论是否调整大小。
g.drawImage(img, 0, 0, getWidth(), getHeight(), null);
Graphics g = bs.getDrawGraphics();
// g.setColor(Color.WHITE);
// g.fillRect(0, 0, getWidth(), getHeight());
g.drawImage(img, 0, 0, getWidth(), getHeight(), null);
g.dispose();
bs.show();