Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.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-Pixel偶尔会扩展_Java_Image_Canvas_Pixel - Fatal编程技术网

Java-Pixel偶尔会扩展

Java-Pixel偶尔会扩展,java,image,canvas,pixel,Java,Image,Canvas,Pixel,我目前正在尝试用Java制作我的第一个非常基本的2D游戏引擎,以便在我希望参加的下一个Ludum Dare中使用。但是,在渲染到画布时,我遇到了视觉失真(没有引发异常)。偶尔,在一个看起来像网格的地方,我的图像中的一个像素(在游戏中被放大)会在x轴或y轴上延伸。例如:一个本应占据屏幕上2x2区域的图像像素现在占据2x3、3x2或3x3 这是我用来渲染像素的类: public class Renderer { private int width, height; private i

我目前正在尝试用Java制作我的第一个非常基本的2D游戏引擎,以便在我希望参加的下一个Ludum Dare中使用。但是,在渲染到画布时,我遇到了视觉失真(没有引发异常)。偶尔,在一个看起来像网格的地方,我的图像中的一个像素(在游戏中被放大)会在x轴或y轴上延伸。例如:一个本应占据屏幕上2x2区域的图像像素现在占据2x3、3x2或3x3

这是我用来渲染像素的类:

public class Renderer
{
    private int width, height;
    private int[] pixelArray;
    public Renderer(GameContainer gc)
    {
        width = gc.getWidth();
        height = gc.getHeight();
        pixelArray = ((DataBufferInt)gc.getWindow().getImage().getRaster().getDataBuffer()).getData();

    }

    public void setPixel(int x, int y, int color)
    {
        if(x <0 || x > width || y < 0 || y > height) return;

        pixelArray[x + (y* width)] = color;
    }

    public void renderImage(Image image, int offsetX, int offsetY)
    {
    for(int x = 0; x < image.width; x++)
        {
            for(int y = 0; y < image.height; y++)
            {
                setPixel(x + offsetX, y + offsetY, image.pixels[x + (y * image.width)]);
            }
        }
    }

    public void clearScreen()
    {
        for(int x = 0; x < width; x++)    
        {
            for(int y = 0; y < height; y++)
            {
                setPixel(x, y, 0xff000000);
            }
        }
    }
}
公共类渲染器
{
私人int宽度、高度;
私有int[]像素阵列;
公共渲染器(GameContainer gc)
{
width=gc.getWidth();
height=gc.getHeight();
pixelArray=((DataBufferInt)gc.getWindow().getImage().getRaster().getDataBuffer()).getData();
}
公共无效设置像素(整数x、整数y、整数颜色)
{
如果(x宽度| y<0 | y>高度)返回;
像素阵列[x+(y*宽度)]=颜色;
}
公共void渲染(图像、int offsetX、int offsetY)
{
对于(int x=0;x
Image
是我自己的类(不是
AWT
类),它加载要显示的图像,包含高度和宽度变量,以及每个像素的RGB值的2D数组


我希望这是足够的信息,有人可以帮助解决这个问题。如果需要更多,请告诉我。

您是否遇到异常情况,或者只是视觉错误?编辑:一开始,在画布上绘图时,听起来好像遇到了一个异常。但是2x3而不是2x2部分听起来像是一个视觉错误。是的,没有例外,只是一个视觉错误。我在代码片段中没有看到任何错误。你测试过(打印项次)image.width和image.height是否正确吗?是的。宽度和高度都打印到正确的值。嗯,也许你有一些后像?形式为:清除图像->绘制图形->移动图形->绘制图形。如果情况并非如此,那么我没有idead,sry=/edit:或者如果在显示图像时缩放图像,这是一个缩放问题?