2011-01-23 12 views
2

これは適切な単語であれば、パネルデバイスコンテキストなどのウィジェットを取得する方法を探しています。私はすべての子ウィジェットを持つパネルのビットマップを取得したいので、パネルのアニメーションをフェードアウトさせるために、ペイントDCでそれを操作できます。これが可能なのかどうか、もしあれば、コードは何ですか?私はこのようなものを期待していました.. wx.Panel.GetDCMap() 何が画面にペイントされるのかのビットマップを返すので、私はそれを消すことができます。ウィジェットが隠れていても、ウィジェットがどのように見えるかのビットマップを取得する必要があります。それ以外の場合は、私はちょうどウィジェットを使用することができます.GetScreenRect()その後、バッファにblit ..ありがとうwxpythonでウィジェットを取得する

答えて

2

良い質問!

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 
+0

あなたは.....私はmemoryDCとpaintDCとscreendcなどを知っていましたが、以前はそのwindowDCについて聞いたことがありません。極端に便利な人に感謝:)あなたは巨大な助けをしてきました、私はちょうどdc笑を保持するウィジェットをリメイクして忙しかった – james

関連する問題