region
.
A backing store (offscreen buffer) large enough to contain region
will be created. The backing store will be initialized with the
background color or background pixmap for window
. Then, all
drawing operations performed on window
will be diverted to the
backing store. When you call gdkWindowEndPaint
, the backing
store will be copied to window
, making it visible onscreen. Only
the part of window
contained in region
will be modified; that is,
drawing operations are clipped to region
.gdkWindowBeginPaintRegion(object, region)
object
region
gdkWindowEndPaint
. If you draw to window
directly without
calling gdkWindowBeginPaintRegion
, the user may see flicker
as individual drawing operations are performed in sequence. The
clipping and background-initializing features of
gdkWindowBeginPaintRegion
are conveniences for the
programmer, so you can avoid doing that work yourself.
When using GTK+, the widget system automatically places calls to
gdkWindowBeginPaintRegion
and gdkWindowEndPaint
around
emissions of the expose_event signal. That is, if you're writing an
expose event handler, you can assume that the exposed area in
GdkEventExpose
has already been cleared to the window background,
is already set as the clip region, and already has a backing store.
Therefore in most cases, application code need not call
gdkWindowBeginPaintRegion
. (You can disable the automatic
calls around expose events on a widget-by-widget basis by calling
gtkWidgetSetDoubleBuffered
.)
If you call this function multiple times before calling the
matching gdkWindowEndPaint
, the backing stores are pushed onto
a stack. gdkWindowEndPaint
copies the topmost backing store
onscreen, subtracts the topmost region from all other regions in
the stack, and pops the stack. All drawing operations affect only
the topmost backing store in the stack. One matching call to
gdkWindowEndPaint
is required for each call to
gdkWindowBeginPaintRegion
.