我的应用程序是用 C 语言编写的,并将 DirectFB 暴露给 Lua 代码。这就是为什么代码看起来很奇怪,但它或多或少是可以直接在 C 中完成的。
所以,首先,我要获取主层,然后是表面:
layer = SelLayer.GetLayer(0) -- Get primary layer
layer:SetCooperativeLevel( SelLayer.CooperativeLevelConst('ADMINISTRATIVE') )
psrf = layer:GetSurface()
然后在上面做一些图形。好的,没问题,它正在工作。
然后,我想在它上面创建一个窗口:
local window = layer:CreateWindow {
pos = {50,50}, size = {200,200},
caps=SelWindow.CapsConst('NONE'),
stacking=SelWindow.StackingConst("UPPER"),
surface_caps=SelSurface.CapabilityConst('NONE')
}
window:SetOpacity(0xff) -- Make it visible
rdc_srf = window:GetSurface() -- Get its surface
但如果我在上面做一些图形
rdc_srf:Clear(60,60,60,100)
rdc_srf:Flip(SelSurface.FlipFlagsConst("BLIT"))
它从不显示:仅显示图层的表面。我尝试了不同的翻转选项,但从未奏效。
我的错误在哪里?我不能直接在图层表面上工作并在上面放一个窗口吗?
谢谢