GDI上两个不同物体的碰撞

本文关键字:碰撞 两个 GDI | 更新日期: 2023-09-27 18:10:45

我想创建一个简单的游戏。我想我在一个图形中有两个不均匀的(不是系统的)GDI对象,用户移动对象1,当对象1与对象2发生碰撞时,我想要得到通知,我怎么用c#做到这一点?

GDI上两个不同物体的碰撞

在单个位图上将两个对象绘制为黑色。然后在单独的位图上绘制其中一个。然后用一个位图减去另一个位图。如果结果与另一个对象在单独的位图上绘制的位图相同,则没有碰撞,否则就会发生碰撞。

这不需要任何数学运算,可以处理不规则形状的物体。只是位图差和运算。

Sudo代码

var bmpObject1 = new bitmap->draw object 1
var bmpObject2 = new bitmap>draw object 2
var bmpCombined = new bitmap>draw object 1 and 2
if (bmpObject1 = (bmpCombined - bmpObject2))
    no collision
else
    collision