C# 如何删除矩形中的某些像素

C# 如何删除矩形中的某些像素,c#,image,C#,Image,我正在设计一款太空入侵者游戏,我需要像最初的游戏一样将障碍物从被击中的地方打破,现在我的障碍物只是缩小了: for (int r = 0; r < BarrierXPos.Count; r++) { if (CollisionCheck("Barrier", BarrierXPos[r], BarrierYPos[r], null) == true) { BarrierFactor[r] += 1; } } for

我正在设计一款太空入侵者游戏,我需要像最初的游戏一样将障碍物从被击中的地方打破,现在我的障碍物只是缩小了:

for (int r = 0; r < BarrierXPos.Count; r++) {
    if (CollisionCheck("Barrier", BarrierXPos[r], BarrierYPos[r], null) == true)
        {
            BarrierFactor[r] += 1;
        }
    }

for (int x = 0; x < BarrierXPos.Count; x++)
    {
        e.Graphics.FillRectangle(Brushes.White, (int)BarrierXPos[x],       (int)BarrierYPos[x], 100 - (10 * BarrierFactor[x]), 50);

    }
for(int r=0;r

因此,到目前为止,大小是由块被击中的次数决定的。然而,我希望它更像最初的太空入侵者,并希望块被动态打破,从它被击中的地方。我想知道的是如何确定子弹击中屏障位图的像素,然后将其删除

我一直在研究这个问题,我知道如何改变位图中的某个像素,但不能改变大量像素,因为这些是矢量图,从矩形切换到多边形或路径(多边形更快,路径提供了一些高级功能)<代码>e.Graphics.DrawPolygon
。然后,当多边形被击中时,插入一个新点(或多个点)以“切掉”多边形。当多边形的表面积足够小时,只需销毁它。@SamAxe
DrawPolygon
函数接受一个
点的数组。将矩形转换为点[]
很简单,但将该数组进一步更改为“删除”其中的特定点需要更多的思考。首先,您必须定义删除像素的方式,以便能够接近解决方案。比如说导弹击中了一个障碍物-它会掉一个边缘像素还是可能是一个内部像素?不管怎样,我相信《太空入侵者》游戏实际上根本不会那样掉像素。更简单的解决方案是为屏障设置一组图像,第一个是完整的屏障,接下来的每个图像都是其破坏的一个阶段。击中障碍物可能不会对图像产生直接影响,但你会倒计时障碍物的生命值-每X个HP dmg值,图像就会变为下一级。@YoryeNathan:这实际上取决于实施者-这就是为什么我将其作为评论而不是答案发布的原因。如果是我,我会在障碍物内沿着与投射物相同的轨迹选择一个点,然后在那里创建一个新点——在障碍物上形成一个“三角形”凹痕。