Как я могу нарисовать в MemoryDC, используя GraphicsContext, а затем добавить его в PaintDC? - PullRequest
0 голосов
/ 16 марта 2010

Я хочу добавить двойную буферизацию к функции рисования, подобной этой.

    dc = wx.PaintDC(self)
    gc = wx.GraphicsContext.Create(dc)
    #draw GraphicsPaths to the gc

Я попытался сначала нарисовать в MemoryDC, а затем перенаправить его обратно в PaintDC:

    dc = wx.MemoryDC()
    dc.SelectObject(wx.NullBitmap)
    gc = wx.GraphicsContext.Create(dc)
    #draw GraphicsPaths to the gc
    dc2=wx.PaintDC(self)
    dc2.Blit(0,0,640,480,dc,0,0)

Однако это не дает мне ничего, кроме пустого экрана. Я неправильно понимаю, как MemoryDC должен работать?

1 Ответ

1 голос
/ 16 марта 2010

Вам нужно создать растровое изображение, а не использовать wx.NullBitmap.

bitmap = wx.EmptyBitmap(w, h)
dc = wx.MemoryDC(bitmap)
...