我正在写一个Chip8模拟器/解释器.这很棒.到目前为止,我需要一个用户界面来玩一些游戏并观看这个糟糕的杰克逊.我第一次遇到一个问题,即在屏幕上绘制帧缓冲区(这只是一个位图)非常模糊.在搞清楚之后我需要将插值模式设置为最近邻,它看起来好多了,但是看起来图像的边缘要么被剪裁,要么我在工作时误解了插值.这是一个截图.
您在顶部,左侧和右侧看到的边缘应以“整个”白色像素结束,与您看到的图案保持一致.特别容易看到左上角的问题,应该是一个完整的白色像素.
被放大的图像是64×32,并且正在使用普通图形对象绘制,如下所示:(忽略64 * 6,我知道它很有趣)
g.DrawImage (cpu.raster,64 * 6,32 * 6);
其中“cpu.raster”是模拟器渲染游戏的位图.我会发布剩下的代码,但这看起来很标准.甚至与图形相关的其他代码是插值/平滑模式,其设置如下:
g = this.CreateGraphics (); g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor; g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.None; this.DoubleBuffered = true;
我应该注意另一个设置来防止这种情况吗?我试着减小绘制图像的大小,想到表格可能是以某种方式剪裁它,但事实并非如此,图像在截图中看到的边缘处结束.