SDL UI菜单按钮 - 鼠标悬停

时间:2013-09-16 10:14:27

标签: c++ sdl sdl-2

我正在为我的游戏引擎创建一个菜单系统,并希望知道如何在鼠标悬停在按钮上时检测到。当按钮是正方形,矩形或圆形时,这很简单,但我想知道如何处理不规则形状的按钮。

这是否可能,如果是,复杂性是否意味着简单地使用边界区域(方形或圆形)会更好?

2 个答案:

答案 0 :(得分:1)

从纹理或曲面数据中制作一个位掩码。决定一项规则;例如,如果图像是100%透明或某种颜色,则将位掩码像素设置为0,否则将其设置为1.对光标执行相同操作。检查冲突时,只需检查位掩码位是否重叠。

答案 1 :(得分:0)

首先我想到的是使用数学函数。如果您知道曲线的等式,您可以通过简单地检查等式的右侧是大于还是小于“y”来计算该点是否低于或高于该值。

因此,如果你有简单的y = x*x并想要检查点(2,1),你可以替换它并检查:

y = 2
x = 1*1 = 1

y> 1,点在曲线上方。对于相反的情况,采取点(1,2),我们得到:

y = 1
x = 2*2 = 4

y< x,点在曲线下。