0
我试图让一个透明SDL_Surface(做块就可以了半透明的矩形),这里是我做了什么:如何获得透明的SDL_Surface?
surface := SDL_CreateRGBSurface(SDL_SWSURFACE, XMAX*TILE_SIZE,
YMAX*TILE_SIZE, BPP, 0, 0, 0, SDL_ALPHA_TRANSPARENT);
SDL_FillRect(surface, nil, SDL_MapRGBA(surface^.format, 0, 0, 0, 0));
这仍然无法正常工作,我得到的表面是黑色的,而不是透明。任何想法?
奖励:为了避免多个translucide矩形在彼此顶部的blitting,有什么办法可以删除这些矩形,然后blit新的一个(没有blitting的背景......)?
mmh ...即使这个标志似乎有必要有一个透明的表面(因为它是在文档中暗示),它仍然不能解决我的问题:/。实际上,它不会改变任何东西......当我使用带有RGBA像素的SDL_FillRect(和alpha值不同于255)时,我仍然可以看到它们完全不透明。 对于我的“奖金”部分,问题是在这种情况下,我的背景将是......没有。或者更确切地说:透明像素。 我不知道是否已经blitting表面上的透明像素会做什么? – halflings 2012-05-05 21:59:01
等一下。你希望表面是透明的,还是你希望_window_透明?如果是窗口,则需要与操作系统交谈,而不是SDL本身。在Win32上,请参阅[这个问题](http://stackoverflow.com/questions/3970066/creating-a-transparent-window-in-c-win32) - 这是为c + +,但你可以谈谈在德尔福相同的DLL。 ..你可能需要深入SDL源代码才能使它工作 - (也许不是。我从来没有尝试过。 – tangentstorm 2012-05-06 08:32:00
至于blitting透明像素:为什么不呢?先禁用混合,然后重新启用它(如果你不能获得透明窗口的工作,你也可以让操作系统给你一个屏幕截图并从那里复制像素 - 以前是透明窗口的唯一方法有关详细信息,请参见[这篇旧文章](http://onjava.com/onjava/excerpt/swinghks_hack41/index.html)。) – tangentstorm 2012-05-06 08:36:38