【问题标题】:SDL: Make existing surface transparent / delete all pixel dataSDL:使现有表面透明/删除所有像素数据
【发布时间】:2014-11-28 07:19:01
【问题描述】:

我在 SDL 中有一个透明表面,这个表面包含像素数据。我现在需要“清除”这个表面。

有没有办法清除表面,使其完全透明(所以我可以在上面画新的东西?)。我发现的唯一方法是创建一个全新的表面,但出于几个原因我想避免这种情况。

【问题讨论】:

    标签: c++ linux sdl sdl-1.2


    【解决方案1】:

    您使用的是什么版本的 SDL(1.2 或 2.0)。

    您可以通过将所有像素设置为某种颜色来“清理”表面(请参阅 memset 和 SDL_Surface 中的像素成员)。但是你不需要为了绘制它而使其透明。如果你在它上面涂抹另一个表面,所有的像素都应该改变它们的颜色。可以给os提供代码吗?

    【讨论】:

    • 抱歉,我忘记了 SDL 版本。我目前使用的是 1.2。问题是,我在屏幕上的这个表面之前对其他表面进行了 blit,这个表面充当了“覆盖”。所以它需要是透明的,这样下面的其他东西仍然可见。
    • 如果它已经在屏幕上,您将不得不重新绘制该部分。如果您只希望该部分受到影响,您可以以某种方式锁定它(我不知道它是什么功能;也许是 SDL_SetClipRect)。如果没有,则使用 memset 或 SLD_FillRect(应该比 memset 慢)。
    猜你喜欢
    • 2019-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多