Package wx :: Class BufferedDC

[frames | no frames]

## Type BufferedDC

    object --+
             |
        Object --+
                 |
                DC --+
                     |
              WindowDC --+
                         |
                  MemoryDC --+
                             |
                            BufferedDC

Known Subclasses:
  `BufferedPaintDC`

This simple class provides a simple way to avoid flicker: when drawing on it, everything is in fact first drawn on an in-memory buffer (a `wx.Bitmap`) and then copied to the screen only once, when this object is destroyed. You can either provide a buffer bitmap yourself, and reuse it the next time something needs painted, or you can let the buffered DC create and provide a buffer bitmap itself.

Buffered DCs can be used in the same way as any other device context. wx.BufferedDC itself typically replaces `wx.ClientDC`, if you want to use it in your EVT_PAINT handler, you should look at `wx.BufferedPaintDC`. You can also use a wx.BufferedDC without providing a target DC. In this case the operations done on the dc will only be written to the buffer bitmap and not to any window, so you will want to have provided the buffer bitmap and then reuse it when it needs painted to the window.

Please note that GTK+ 2.0 and OS X provide double buffering themselves natively. You may want to use `wx.Window.IsDoubleBuffered` to determine whether you need to use buffering or not, or use `wx.AutoBufferedPaintDC` to avoid needless double buffering on systems that already do it automatically.

Method Summary
BufferedDC | ``__init__`(self, dc, buffer, style)` __init__(self, DC dc, Size area, int style=BUFFER_CLIENT_AREA) -> BufferedDC
| `__del__(self)`
int | `GetStyle(self)`
| `SetStyle(self, style)`
| ``UnMask`(self)` Blits the buffer to the dc, and detaches the dc from the buffer (so it can be effectively used once only).

Property Summary
| `thisown`: The membership flag

Method Details

### __init__(self, dc, buffer=NullBitmap, style=BUFFER_CLIENT_AREA)
(Constructor)

__init__(self, DC dc, Size area, int style=BUFFER_CLIENT_AREA) -> BufferedDC

Constructs a buffered DC.

  Parameters:
    `dc` - The underlying DC: everything drawn to this object will be flushed to this DC when this object is destroyed. You may pass `None` in order to just initialize the buffer, and not flush it.
    (type=DC)

    `buffer` - If a `wx.Size` object is passed as the 2nd arg then it is the size of the bitmap that will be created internally and used for an implicit buffer. If the 2nd arg is a `wx.Bitmap` then it is the explicit buffer that will be used. Using an explicit buffer is the most efficient solution as the bitmap doesn't have to be recreated each time but it also requires more memory as the bitmap is never freed. The bitmap should have appropriate size, anything drawn outside of its bounds is clipped. If wx.NullBitmap is used then a new buffer will be allocated that is the same size as the dc.
    (type=Bitmap)

    `style` - The style parameter indicates whether the supplied buffer is intended to cover the entire virtual size of a `wx.ScrolledWindow` or if it only covers the client area. Acceptable values are `wx.BUFFER_VIRTUAL_AREA` and `wx.BUFFER_CLIENT_AREA`.
    (type=int)

  Returns:
    BufferedDC
  Overrides:
    `wx.MemoryDC.__init__`

### UnMask(self)

Blits the buffer to the dc, and detaches the dc from the buffer (so it can be effectively used once only). This is usually only called in the destructor.

Property Details

### thisown

The membership flag

Generated by Epydoc 2.1.20050511.rpd on Thu Mar 22 12:07:09 2007 | http://epydoc.sf.net