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