gpt4 book ai didi

wxpython - 在 wxpython 中获取小部件 dc

转载 作者:行者123 更新时间:2023-12-04 06:36:54 27 4
gpt4 key购买 nike

如果这是正确的词,我正在寻找一种方法来获取小部件,例如面板设备上下文。我想获取面板的位图及其所有子小部件,以便我可以在油漆 DC 中操纵它以淡入淡出面板的动画。这是可能的,如果是这样,代码是什么?我希望有这样的东西.. wx.Panel.GetDCMap()
这将返回将要绘制到屏幕上的位图,以便我可以淡化它。这也需要获取小部件的位图,即使它是隐藏的。否则我可以只使用 widget.GetScreenRect() 然后将其 blit 到缓冲区..谢谢

最佳答案

好问题!我不认为它会起作用,但我尝试了这个,它确实做到了:

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) first 与将窗口移出屏幕具有类似的效果。

以上测试在 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

关于wxpython - 在 wxpython 中获取小部件 dc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4773961/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com