我正在尝试克隆太空入侵者,与绿色障碍相撞。 https://www.youtube.com/watch?v=bLAhmnCZym4
现在我可以访问绿色屏障的像素 我想在子弹的碰撞点周围绘制一个坚实的黑色圆圈,现在我正在使用下面的代码,但是它会传播随机像素,而不是纯黑色圆圈,它的中心是子弹的击中点 结果如下所示: http://i.stack.imgur.com/mpgkM.png
int radius = 50;
for (int y = -radius; y <= radius; y++)
{
for (int x = -radius; x <= radius; x++)
{
if (x*x + y*y <= radius*radius)
{
int j = x + normX;
int i = y + normY;
uint8 pixelOffset = j + i;
ptr += pixelOffset;
*ptr = 0xff000000;
}
}
}
答案 0 :(得分:0)
像素通常以光栅顺序存储,因此您需要更改
uint8 pixelOffset = j + i;
到
int pixelOffset = j + i*pitch;
其中pitch是图像的宽度。
此外,每次写一个像素时,你都会将ptr移动到一个新的位置,这样就得到了一条对角线。
替换
ptr += pixelOffset;
*ptr = 0xff000000;
与
ptr[pixelOffset] = 0xff000000;