在space个入侵者中爆破黑圈

Blasting black circle in space invader

我正在尝试克隆space入侵者,与绿色屏障碰撞。 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;
                    }
                }
            }

像素通常按光栅顺序存储,因此您需要更改

uint8 pixelOffset = j + i;

int pixelOffset = j + i*pitch;

其中间距是图片的宽度。

此外,每次写入一个像素时,您都会将 ptr 移动到一个新位置,因此您会得到一条对角线。

替换

                    ptr += pixelOffset;
                    *ptr = 0xff000000;

                    ptr[pixelOffset] = 0xff000000;