保存设备上下文绘制的图像,wxPython

时间:2010-02-03 21:58:12

标签: python wxpython wxwidgets

我需要能够保存设备上下文画布状态的图像(格式无关紧要)。我尝试了dc.GetAsBitmap,但它返回了无效的位图。我该怎么办?

2 个答案:

答案 0 :(得分:5)

我相信这应该可以解决问题:

def saveSnapshot(dcSource):
    # based largely on code posted to wxpython-users by Andrea Gavana 2006-11-08
    size = dcSource.Size

    # Create a Bitmap that will later on hold the screenshot image
    # Note that the Bitmap must have a size big enough to hold the screenshot
    # -1 means using the current default colour depth
    bmp = wx.EmptyBitmap(size.width, size.height)

    # Create a memory DC that will be used for actually taking the screenshot
    memDC = wx.MemoryDC()

    # Tell the memory DC to use our Bitmap
    # all drawing action on the memory DC will go to the Bitmap now
    memDC.SelectObject(bmp)

    # Blit (in this case copy) the actual screen on the memory DC
    # and thus the Bitmap
    memDC.Blit( 0, # Copy to this X coordinate
        0, # Copy to this Y coordinate
        size.width, # Copy this width
        size.height, # Copy this height
        dcSource, # From where do we copy?
        0, # What's the X offset in the original DC?
        0  # What's the Y offset in the original DC?
        )

    # Select the Bitmap out of the memory DC by selecting a new
    # uninitialized Bitmap
    memDC.SelectObject(wx.NullBitmap)

    img = bmp.ConvertToImage()
    img.SaveFile('saved.png', wx.BITMAP_TYPE_PNG)

(我只是包含原始链接,但无法快速找到。)

答案 1 :(得分:1)

哟可能会从this中找到一些东西(使用图像和wxPython)