如何使用GraphicsContext绘制到MemoryDC,然后将其复制到PaintDC?

0 投票
1 回答
955 浏览
提问于 2025-04-15 20:28

我想在一个绘图函数中加入双缓冲的功能,像这样。

    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

你需要创建一个位图,而不是使用 wx.NullBitmap。

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

撰写回答