我正在寻找一种获取窗口小部件的方法,例如面板设备上下文,如果这是正确的单词。我希望获得面板的位图及其所有子窗口小部件,以便我可以在绘制直流中操作它以淡出面板的淡出动画。这是可能的,如果是这样,代码是什么?我希望有这样的东西.. wx.Panel.GetDCMap() 这将返回一个将要绘制到屏幕上的位图,以便我可以淡化它。这也需要抓住小部件看起来的位图,即使它是隐藏的。否则我可以使用widget.GetScreenRect()然后将它blit到缓冲区..谢谢
答案 0 :(得分:3)
好问题!我认为它不会起作用,但我尝试了这个并且它确实:
def window_to_bitmap(window):
width, height = window.GetSize()
bitmap = wx.EmptyBitmap(width, height)
wdc = wx.WindowDC(window)
mdc = wx.MemoryDC(bitmap)
mdc.Blit(0, 0, width, height, wdc, 0, 0)
return bitmap
如果窗口被隐藏,则无效。
远离屏幕移动窗口的工作,显示客户区,但不显示窗口装饰。
首先调用SetTransparent(0)
与将窗口移出屏幕具有类似的效果。
以上在64位Windows 7上进行的测试。
如果您只需要客户区,则可以执行上述方法之一并调整函数以仅使用客户区创建位图,如下所示:
def window_to_bitmap(window):
width, height = window.GetClientSize()
bitmap = wx.EmptyBitmap(width, height)
wdc = wx.ClientDC(window)
mdc = wx.MemoryDC(bitmap)
mdc.Blit(0, 0, width, height, wdc, 0, 0)
return bitmap