]> git.saurik.com Git - wxWidgets.git/blob - docs/latex/wx/dc.tex
Spacing tweak
[wxWidgets.git] / docs / latex / wx / dc.tex
1 \section{\class{wxDC}}\label{wxdc}
2
3 A wxDC is a {\it device context} onto which graphics and text can be drawn.
4 It is intended to represent a number of output devices in a generic way,
5 so a window can have a device context associated with it, and a printer also has a device context.
6 In this way, the same piece of code may write to a number of different devices,
7 if the device context is used as a parameter.
8
9 Notice that wxDC is an abstract base class and can't be created directly,
10 please use \helpref{wxPaintDC}{wxpaintdc}, \helpref{wxClientDC}{wxclientdc},
11 \helpref{wxWindowDC}{wxwindowdc}, \helpref{wxScreenDC}{wxscreendc},
12 \helpref{wxMemoryDC}{wxmemorydc} or \helpref{wxPrinterDC}{wxprinterdc}.
13
14 % VZ: we should really document them instead of this lame excuse, but I don't
15 % have time for it now, when it is done please remove this
16 Please note that in addition to the versions of the methods documented here,
17 there are also versions which accept single {\tt wxPoint} parameter instead of
18 two {\tt wxCoord} ones or {\tt wxPoint} and {\tt wxSize} instead of four of
19 them.
20
21 \wxheading{Derived from}
22
23 \helpref{wxObject}{wxobject}
24
25 \wxheading{Include files}
26
27 <wx/dc.h>
28
29 \wxheading{See also}
30
31 \helpref{Overview}{dcoverview}
32
33 \latexignore{\rtfignore{\wxheading{Members}}}
34
35
36 \membersection{wxDC::Blit}\label{wxdcblit}
37
38 \func{bool}{Blit}{\param{wxCoord}{ xdest}, \param{wxCoord}{ ydest}, \param{wxCoord}{ width}, \param{wxCoord}{ height},
39 \param{wxDC* }{source}, \param{wxCoord}{ xsrc}, \param{wxCoord}{ ysrc}, \param{int}{ logicalFunc = wxCOPY},
40 \param{bool }{useMask = false}, \param{wxCoord}{ xsrcMask = -1}, \param{wxCoord}{ ysrcMask = -1}}
41
42 Copy from a source DC to this DC, specifying the destination
43 coordinates, size of area to copy, source DC, source coordinates,
44 logical function, whether to use a bitmap mask, and mask source position.
45
46 \wxheading{Parameters}
47
48 \docparam{xdest}{Destination device context x position.}
49
50 \docparam{ydest}{Destination device context y position.}
51
52 \docparam{width}{Width of source area to be copied.}
53
54 \docparam{height}{Height of source area to be copied.}
55
56 \docparam{source}{Source device context.}
57
58 \docparam{xsrc}{Source device context x position.}
59
60 \docparam{ysrc}{Source device context y position.}
61
62 \docparam{logicalFunc}{Logical function to use: see \helpref{wxDC::SetLogicalFunction}{wxdcsetlogicalfunction}.}
63
64 \docparam{useMask}{If true, Blit does a transparent blit using the mask that is associated with the bitmap
65 selected into the source device context. The Windows implementation does the following if MaskBlt cannot be used:
66
67 \begin{enumerate}
68 \item Creates a temporary bitmap and copies the destination area into it.
69 \item Copies the source area into the temporary bitmap using the specified logical function.
70 \item Sets the masked area in the temporary bitmap to BLACK by ANDing the
71 mask bitmap with the temp bitmap with the foreground colour set to WHITE
72 and the bg colour set to BLACK.
73 \item Sets the unmasked area in the destination area to BLACK by ANDing the
74 mask bitmap with the destination area with the foreground colour set to BLACK
75 and the background colour set to WHITE.
76 \item ORs the temporary bitmap with the destination area.
77 \item Deletes the temporary bitmap.
78 \end{enumerate}
79
80 This sequence of operations ensures that the source's transparent area need not be black,
81 and logical functions are supported.
82
83 {\bf Note:} on Windows, blitting with masks can be speeded up considerably by compiling
84 wxWidgets with the wxUSE\_DC\_CACHE option enabled. You can also influence whether MaskBlt
85 or the explicit mask blitting code above is used, by using \helpref{wxSystemOptions}{wxsystemoptions} and
86 setting the {\bf no-maskblt} option to 1.
87
88 }
89
90 \docparam{xsrcMask}{Source x position on the mask. If both xsrcMask and ysrcMask are -1, xsrc and ysrc
91 will be assumed for the mask source position. Currently only implemented on Windows.}
92
93 \docparam{ysrcMask}{Source y position on the mask. If both xsrcMask and ysrcMask are -1, xsrc and ysrc
94 will be assumed for the mask source position. Currently only implemented on Windows.}
95
96
97 \wxheading{Remarks}
98
99 There is partial support for Blit in wxPostScriptDC, under X.
100
101 See \helpref{wxMemoryDC}{wxmemorydc} for typical usage.
102
103 \wxheading{See also}
104
105 \helpref{wxMemoryDC}{wxmemorydc}, \helpref{wxBitmap}{wxbitmap}, \helpref{wxMask}{wxmask}
106
107 \begin{comment}
108
109 \membersection{wxDC::CacheEnabled}\label{wxdccacheenabled}
110
111 \func{static bool}{CacheEnabled}{\void}
112
113 On supported platforms (currently only Windows), returns true
114 if the DC cache is enabled. The DC cache
115 can speed up the \helpref{Blit}{wxdcblit} operation when
116 drawing a large number of masked bitmaps.
117
118 If using the cache functions in your code, please test for the
119 wxUSE\_DC\_CACHEING preprocessor symbol for portability.
120
121 \wxheading{See also}
122
123 \helpref{wxDC::EnableCache}{wxdcenablecache}, \helpref{wxDC::ClearCache}
124 \end{comment}
125
126
127 \membersection{wxDC::CalcBoundingBox}\label{wxdccalcboundingbox}
128
129 \func{void}{CalcBoundingBox}{\param{wxCoord }{x}, \param{wxCoord }{y}}
130
131 Adds the specified point to the bounding box which can be retrieved with
132 \helpref{MinX}{wxdcminx}, \helpref{MaxX}{wxdcmaxx} and
133 \helpref{MinY}{wxdcminy}, \helpref{MaxY}{wxdcmaxy} functions.
134
135 \wxheading{See also}
136
137 \helpref{ResetBoundingBox}{wxdcresetboundingbox}
138
139
140 \membersection{wxDC::Clear}\label{wxdcclear}
141
142 \func{void}{Clear}{\void}
143
144 Clears the device context using the current background brush.
145
146 \begin{comment}
147
148 \membersection{wxDC::ClearCache}\label{wxdcclearcache}
149
150 \func{static void}{ClearCache}{\void}
151
152 On supported platforms (currently only Windows), clears
153 the contents of the DC cache (one bitmap and two Windows device contexts). The DC cache
154 can speed up the \helpref{Blit}{wxdcblit} operation when
155 drawing a large number of masked bitmaps. You should
156 call ClearCache at the end of length DC operations if you wish to only use
157 the cache transiently; you should also call it as your application exits.
158
159 If using the cache functions in your code, please test for the
160 wxUSE\_DC\_CACHEING preprocessor symbol for portability.
161
162 \wxheading{See also}
163
164 \helpref{wxDC::EnableCache}{wxdcenablecache}, \helpref{wxDC::CacheEnabled}
165 \end{comment}
166
167
168 \membersection{wxDC::ComputeScaleAndOrigin}\label{wxdccomputescaleandorigin}
169
170 \func{virtual void}{ComputeScaleAndOrigin}{\void}
171
172 Performs all necessary computations for given platform and context type
173 after each change of scale and origin parameters. Usually called automatically
174 internally after such changes.
175
176
177 \membersection{wxDC::CrossHair}\label{wxdccrosshair}
178
179 \func{void}{CrossHair}{\param{wxCoord}{ x}, \param{wxCoord}{ y}}
180
181 Displays a cross hair using the current pen. This is a vertical
182 and horizontal line the height and width of the window, centred
183 on the given point.
184
185
186 \membersection{wxDC::DestroyClippingRegion}\label{wxdcdestroyclippingregion}
187
188 \func{void}{DestroyClippingRegion}{\void}
189
190 Destroys the current clipping region so that none of the DC is clipped.
191 See also \helpref{wxDC::SetClippingRegion}{wxdcsetclippingregion}.
192
193
194 \membersection{wxDC::DeviceToLogicalX}\label{wxdcdevicetologicalx}
195
196 \func{wxCoord}{DeviceToLogicalX}{\param{wxCoord}{ x}}
197
198 Convert device X coordinate to logical coordinate, using the current
199 mapping mode.
200
201
202 \membersection{wxDC::DeviceToLogicalXRel}\label{wxdcdevicetologicalxrel}
203
204 \func{wxCoord}{DeviceToLogicalXRel}{\param{wxCoord}{ x}}
205
206 Convert device X coordinate to relative logical coordinate, using the current
207 mapping mode but ignoring the x axis orientation.
208 Use this function for converting a width, for example.
209
210
211 \membersection{wxDC::DeviceToLogicalY}\label{wxdcdevicetologicaly}
212
213 \func{wxCoord}{DeviceToLogicalY}{\param{wxCoord}{ y}}
214
215 Converts device Y coordinate to logical coordinate, using the current
216 mapping mode.
217
218
219 \membersection{wxDC::DeviceToLogicalYRel}\label{wxdcdevicetologicalyrel}
220
221 \func{wxCoord}{DeviceToLogicalYRel}{\param{wxCoord}{ y}}
222
223 Convert device Y coordinate to relative logical coordinate, using the current
224 mapping mode but ignoring the y axis orientation.
225 Use this function for converting a height, for example.
226
227
228 \membersection{wxDC::DrawArc}\label{wxdcdrawarc}
229
230 \func{void}{DrawArc}{\param{wxCoord}{ x1}, \param{wxCoord}{ y1}, \param{wxCoord}{ x2}, \param{wxCoord}{ y2}, \param{wxCoord}{ xc}, \param{wxCoord}{ yc}}
231
232 Draws an arc of a circle, centred on ({\it xc, yc}), with starting point ({\it x1, y1})
233 and ending at ({\it x2, y2}). The current pen is used for the outline
234 and the current brush for filling the shape.
235
236 The arc is drawn in an anticlockwise direction from the start point to the end point.
237
238
239 \membersection{wxDC::DrawBitmap}\label{wxdcdrawbitmap}
240
241 \func{void}{DrawBitmap}{\param{const wxBitmap\&}{ bitmap}, \param{wxCoord}{ x}, \param{wxCoord}{ y}, \param{bool}{ transparent}}
242
243 Draw a bitmap on the device context at the specified point. If {\it transparent} is true and the bitmap has
244 a transparency mask, the bitmap will be drawn transparently.
245
246 When drawing a mono-bitmap, the current text foreground colour will be used to draw the foreground
247 of the bitmap (all bits set to 1), and the current text background colour to draw the background
248 (all bits set to 0). See also \helpref{SetTextForeground}{wxdcsettextforeground},
249 \helpref{SetTextBackground}{wxdcsettextbackground} and \helpref{wxMemoryDC}{wxmemorydc}.
250
251
252 \membersection{wxDC::DrawCheckMark}\label{wxdcdrawcheckmark}
253
254 \func{void}{DrawCheckMark}{\param{wxCoord}{ x}, \param{wxCoord}{ y}, \param{wxCoord}{ width}, \param{wxCoord}{ height}}
255
256 \func{void}{DrawCheckMark}{\param{const wxRect \&}{rect}}
257
258 Draws a check mark inside the given rectangle.
259
260
261 \membersection{wxDC::DrawCircle}\label{wxdcdrawcircle}
262
263 \func{void}{DrawCircle}{\param{wxCoord}{ x}, \param{wxCoord}{ y}, \param{wxCoord}{ radius}}
264
265 \func{void}{DrawCircle}{\param{const wxPoint\&}{ pt}, \param{wxCoord}{ radius}}
266
267 Draws a circle with the given centre and radius.
268
269 \wxheading{See also}
270
271 \helpref{DrawEllipse}{wxdcdrawellipse}
272
273
274 \membersection{wxDC::DrawEllipse}\label{wxdcdrawellipse}
275
276 \func{void}{DrawEllipse}{\param{wxCoord}{ x}, \param{wxCoord}{ y}, \param{wxCoord}{ width}, \param{wxCoord}{ height}}
277
278 \func{void}{DrawEllipse}{\param{const wxPoint\&}{ pt}, \param{const wxSize\&}{ size}}
279
280 \func{void}{DrawEllipse}{\param{const wxRect\&}{ rect}}
281
282 Draws an ellipse contained in the rectangle specified either with the given top
283 left corner and the given size or directly. The current pen is used for the
284 outline and the current brush for filling the shape.
285
286 \wxheading{See also}
287
288 \helpref{DrawCircle}{wxdcdrawcircle}
289
290
291 \membersection{wxDC::DrawEllipticArc}\label{wxdcdrawellipticarc}
292
293 \func{void}{DrawEllipticArc}{\param{wxCoord}{ x}, \param{wxCoord}{ y}, \param{wxCoord}{ width}, \param{wxCoord}{ height},
294 \param{double}{ start}, \param{double}{ end}}
295
296 Draws an arc of an ellipse. The current pen is used for drawing the arc and
297 the current brush is used for drawing the pie.
298
299 {\it x} and {\it y} specify the x and y coordinates of the upper-left corner of the rectangle that contains
300 the ellipse.
301
302 {\it width} and {\it height} specify the width and height of the rectangle that contains
303 the ellipse.
304
305 {\it start} and {\it end} specify the start and end of the arc relative to the three-o'clock
306 position from the center of the rectangle. Angles are specified
307 in degrees (360 is a complete circle). Positive values mean
308 counter-clockwise motion. If {\it start} is equal to {\it end}, a
309 complete ellipse will be drawn.
310
311
312 \membersection{wxDC::DrawIcon}\label{wxdcdrawicon}
313
314 \func{void}{DrawIcon}{\param{const wxIcon\&}{ icon}, \param{wxCoord}{ x}, \param{wxCoord}{ y}}
315
316 Draw an icon on the display (does nothing if the device context is PostScript).
317 This can be the simplest way of drawing bitmaps on a window.
318
319
320 \membersection{wxDC::DrawLabel}\label{wxdcdrawlabel}
321
322 \func{virtual void}{DrawLabel}{\param{const wxString\&}{ text},
323 \param{const wxBitmap\&}{ image},
324 \param{const wxRect\&}{ rect},
325 \param{int}{ alignment = wxALIGN\_LEFT | wxALIGN\_TOP},
326 \param{int}{ indexAccel = -1},
327 \param{wxRect *}{rectBounding = NULL}}
328
329 \func{void}{DrawLabel}{\param{const wxString\&}{ text}, \param{const wxRect\&}{ rect},
330 \param{int}{ alignment = wxALIGN\_LEFT | wxALIGN\_TOP},
331 \param{int}{ indexAccel = -1}}
332
333 Draw optional bitmap and the text into the given rectangle and aligns it as specified
334 by alignment parameter; it also will emphasize the character with the given index if
335 it is != -1 and return the bounding rectangle if required.
336
337
338 \membersection{wxDC::DrawLine}\label{wxdcdrawline}
339
340 \func{void}{DrawLine}{\param{wxCoord}{ x1}, \param{wxCoord}{ y1}, \param{wxCoord}{ x2}, \param{wxCoord}{ y2}}
341
342 Draws a line from the first point to the second. The current pen is used
343 for drawing the line. Note that the point $(x2, y2)$ is {\emph not} part of the
344 line and is not drawn by this function (this is consistent with the behaviour
345 of many other toolkits).
346
347
348 \membersection{wxDC::DrawLines}\label{wxdcdrawlines}
349
350 \func{void}{DrawLines}{\param{int}{ n}, \param{wxPoint}{ points[]}, \param{wxCoord}{ xoffset = 0}, \param{wxCoord}{ yoffset = 0}}
351
352 \func{void}{DrawLines}{\param{wxList *}{points}, \param{wxCoord}{ xoffset = 0}, \param{wxCoord}{ yoffset = 0}}
353
354 Draws lines using an array of {\it points} of size {\it n}, or list of
355 pointers to points, adding the optional offset coordinate. The current
356 pen is used for drawing the lines. The programmer is responsible for
357 deleting the list of points.
358
359 \pythonnote{The wxPython version of this method accepts a Python list
360 of wxPoint objects.}
361
362 \perlnote{The wxPerl version of this method accepts
363 as its first parameter a reference to an array
364 of wxPoint objects.}
365
366
367 \membersection{wxDC::DrawPolygon}\label{wxdcdrawpolygon}
368
369 \func{void}{DrawPolygon}{\param{int}{ n}, \param{wxPoint}{ points[]}, \param{wxCoord}{ xoffset = 0}, \param{wxCoord}{ yoffset = 0},\\
370 \param{int }{fill\_style = wxODDEVEN\_RULE}}
371
372 \func{void}{DrawPolygon}{\param{wxList *}{points}, \param{wxCoord}{ xoffset = 0}, \param{wxCoord}{ yoffset = 0},\\
373 \param{int }{fill\_style = wxODDEVEN\_RULE}}
374
375 Draws a filled polygon using an array of {\it points} of size {\it n},
376 or list of pointers to points, adding the optional offset coordinate.
377
378 The last argument specifies the fill rule: {\bf wxODDEVEN\_RULE} (the
379 default) or {\bf wxWINDING\_RULE}.
380
381 The current pen is used for drawing the outline, and the current brush
382 for filling the shape. Using a transparent brush suppresses filling.
383 The programmer is responsible for deleting the list of points.
384
385 Note that wxWidgets automatically closes the first and last points.
386
387 \pythonnote{The wxPython version of this method accepts a Python list
388 of wxPoint objects.}
389
390 \perlnote{The wxPerl version of this method accepts
391 as its first parameter a reference to an array
392 of wxPoint objects.}
393
394
395 \membersection{wxDC::DrawPolyPolygon}\label{wxdcdrawpolypolygon}
396
397 \func{void}{DrawPolyPolygon}{\param{int}{ n}, \param{int}{ count[]}, \param{wxPoint}{ points[]}, \param{wxCoord}{ xoffset = 0}, \param{wxCoord}{ yoffset = 0},\\
398 \param{int }{fill\_style = wxODDEVEN\_RULE}}
399
400 Draws two or more filled polygons using an array of {\it points}, adding the
401 optional offset coordinates.
402
403 Notice that for the platforms providing a native implementation
404 of this function (Windows and PostScript-based wxDC currently), this is more
405 efficient than using \helpref{DrawPolygon}{wxdcdrawpolygon} in a loop.
406
407 {\it n} specifies the number of polygons to draw, the array {\it count} of size
408 {\it n} specifies the number of points in each of the polygons in the
409 {\it points} array.
410
411 The last argument specifies the fill rule: {\bf wxODDEVEN\_RULE} (the default)
412 or {\bf wxWINDING\_RULE}.
413
414 The current pen is used for drawing the outline, and the current brush for
415 filling the shape. Using a transparent brush suppresses filling.
416
417 The polygons maybe disjoint or overlapping. Each polygon specified in a call to
418 {\bf DrawPolyPolygon} must be closed. Unlike polygons created by the
419 \helpref{DrawPolygon}{wxdcdrawpolygon} member function, the polygons created by
420 {\bf DrawPolyPolygon} are not closed automatically.
421
422 \pythonnote{Not implemented yet}
423
424 \perlnote{Not implemented yet}
425
426
427 \membersection{wxDC::DrawPoint}\label{wxdcdrawpoint}
428
429 \func{void}{DrawPoint}{\param{wxCoord}{ x}, \param{wxCoord}{ y}}
430
431 Draws a point using the color of the current pen. Note that the other properties of the pen are not used, such as width etc..
432
433
434 \membersection{wxDC::DrawRectangle}\label{wxdcdrawrectangle}
435
436 \func{void}{DrawRectangle}{\param{wxCoord}{ x}, \param{wxCoord}{ y}, \param{wxCoord}{ width}, \param{wxCoord}{ height}}
437
438 Draws a rectangle with the given top left corner, and with the given
439 size. The current pen is used for the outline and the current brush
440 for filling the shape.
441
442
443 \membersection{wxDC::DrawRotatedText}\label{wxdcdrawrotatedtext}
444
445 \func{void}{DrawRotatedText}{\param{const wxString\& }{text}, \param{wxCoord}{ x}, \param{wxCoord}{ y}, \param{double}{ angle}}
446
447 Draws the text rotated by {\it angle} degrees.
448
449 {\bf NB:} Under Win9x only TrueType fonts can be drawn by this function. In
450 particular, a font different from {\tt wxNORMAL\_FONT} should be used as the
451 latter is not a TrueType font. {\tt wxSWISS\_FONT} is an example of a font
452 which is.
453
454 \wxheading{See also}
455
456 \helpref{DrawText}{wxdcdrawtext}
457
458
459 \membersection{wxDC::DrawRoundedRectangle}\label{wxdcdrawroundedrectangle}
460
461 \func{void}{DrawRoundedRectangle}{\param{wxCoord}{ x}, \param{wxCoord}{ y}, \param{wxCoord}{ width}, \param{wxCoord}{ height}, \param{double}{ radius}}
462
463 Draws a rectangle with the given top left corner, and with the given
464 size. The corners are quarter-circles using the given radius. The
465 current pen is used for the outline and the current brush for filling
466 the shape.
467
468 If {\it radius} is positive, the value is assumed to be the
469 radius of the rounded corner. If {\it radius} is negative,
470 the absolute value is assumed to be the {\it proportion} of the smallest
471 dimension of the rectangle. This means that the corner can be
472 a sensible size relative to the size of the rectangle, and also avoids
473 the strange effects X produces when the corners are too big for
474 the rectangle.
475
476
477 \membersection{wxDC::DrawSpline}\label{wxdcdrawspline}
478
479 \func{void}{DrawSpline}{\param{int }{n}, \param{wxPoint }{points[]}}
480
481 Draws a spline between all given control points, using the current
482 pen.
483
484 \func{void}{DrawSpline}{\param{wxList *}{points}}
485
486 Draws a spline between all given control points, using the current
487 pen. Doesn't delete the wxList and contents.
488
489 \func{void}{DrawSpline}{\param{wxCoord}{ x1}, \param{wxCoord}{ y1}, \param{wxCoord}{ x2}, \param{wxCoord}{ y2}, \param{wxCoord}{ x3}, \param{wxCoord}{ y3}}
490
491 Draws a three-point spline using the current pen.
492
493 \pythonnote{The wxPython version of this method accepts a Python list
494 of wxPoint objects.}
495
496 \perlnote{The wxPerl version of this method accepts a reference to an array
497 of wxPoint objects.}
498
499
500 \membersection{wxDC::DrawText}\label{wxdcdrawtext}
501
502 \func{void}{DrawText}{\param{const wxString\& }{text}, \param{wxCoord}{ x}, \param{wxCoord}{ y}}
503
504 Draws a text string at the specified point, using the current text font,
505 and the current text foreground and background colours.
506
507 The coordinates refer to the top-left corner of the rectangle bounding
508 the string. See \helpref{wxDC::GetTextExtent}{wxdcgettextextent} for how
509 to get the dimensions of a text string, which can be used to position the
510 text more precisely.
511
512 {\bf NB:} under wxGTK the current
513 \helpref{logical function}{wxdcgetlogicalfunction} is used by this function
514 but it is ignored by wxMSW. Thus, you should avoid using logical functions
515 with this function in portable programs.
516
517 \begin{comment}
518
519 \membersection{wxDC::EnableCache}\label{wxdcenablecache}
520
521 \func{static void}{EnableCache}{\param{bool}{ enableCache}}
522
523 On supported platforms (currently only Windows), enables the DC cache
524 which can speed up the \helpref{Blit}{wxdcblit} operation when
525 drawing a large number of masked bitmaps.
526
527 If using the cache functions in your code, please test for the
528 wxUSE\_DC\_CACHEING preprocessor symbol for portability.
529
530 \wxheading{See also}
531
532 \helpref{wxDC::CacheEnabled}{wxdccacheenabled}, \helpref{wxDC::ClearCache}
533 \end{comment}
534
535
536 \membersection{wxDC::EndDoc}\label{wxdcenddoc}
537
538 \func{void}{EndDoc}{\void}
539
540 Ends a document (only relevant when outputting to a printer).
541
542
543 \membersection{wxDC::EndPage}\label{wxdcendpage}
544
545 \func{void}{EndPage}{\void}
546
547 Ends a document page (only relevant when outputting to a printer).
548
549
550 \membersection{wxDC::FloodFill}\label{wxdcfloodfill}
551
552 \func{bool}{FloodFill}{\param{wxCoord}{ x}, \param{wxCoord}{ y}, \param{const wxColour\&}{ colour}, \param{int}{ style=wxFLOOD\_SURFACE}}
553
554 Flood fills the device context starting from the given point, using
555 the {\it current brush colour}, and using a style:
556
557 \begin{itemize}\itemsep=0pt
558 \item wxFLOOD\_SURFACE: the flooding occurs until a colour other than the given colour is encountered.
559 \item wxFLOOD\_BORDER: the area to be flooded is bounded by the given colour.
560 \end{itemize}
561
562 Returns false if the operation failed.
563
564 {\it Note:} The present implementation for non-Windows platforms may fail to find
565 colour borders if the pixels do not match the colour exactly. However the
566 function will still return true.
567
568
569 \membersection{wxDC::GetBackground}\label{wxdcgetbackground}
570
571 \constfunc{const wxBrush\&}{GetBackground}{\void}
572
573 Gets the brush used for painting the background (see \helpref{wxDC::SetBackground}{wxdcsetbackground}).
574
575
576 \membersection{wxDC::GetBackgroundMode}\label{wxdcgetbackgroundmode}
577
578 \constfunc{int}{GetBackgroundMode}{\void}
579
580 Returns the current background mode: {\tt wxSOLID} or {\tt wxTRANSPARENT}.
581
582 \wxheading{See also}
583
584 \helpref{SetBackgroundMode}{wxdcsetbackgroundmode}
585
586
587 \membersection{wxDC::GetBrush}\label{wxdcgetbrush}
588
589 \constfunc{const wxBrush\&}{GetBrush}{\void}
590
591 Gets the current brush (see \helpref{wxDC::SetBrush}{wxdcsetbrush}).
592
593
594 \membersection{wxDC::GetCharHeight}\label{wxdcgetcharheight}
595
596 \func{wxCoord}{GetCharHeight}{\void}
597
598 Gets the character height of the currently set font.
599
600
601 \membersection{wxDC::GetCharWidth}\label{wxdcgetcharwidth}
602
603 \func{wxCoord}{GetCharWidth}{\void}
604
605 Gets the average character width of the currently set font.
606
607
608 \membersection{wxDC::GetClippingBox}\label{wxdcgetclippingbox}
609
610 \func{void}{GetClippingBox}{\param{wxCoord}{ *x}, \param{wxCoord}{ *y}, \param{wxCoord}{ *width}, \param{wxCoord}{ *height}}
611
612 Gets the rectangle surrounding the current clipping region.
613
614 \pythonnote{No arguments are required and the four values defining the
615 rectangle are returned as a tuple.}
616
617 \perlnote{This method takes no arguments and returns a four element list
618 {\tt ( x, y, width, height )}}
619
620
621 \membersection{wxDC::GetFont}\label{wxdcgetfont}
622
623 \constfunc{const wxFont\&}{GetFont}{\void}
624
625 Gets the current font. Notice that even although each device context object has
626 some default font after creation, this method would return a \texttt{wxNullFont}
627 initially and only after calling \helpref{wxDC::SetFont}{wxdcsetfont} a valid
628 font is returned.
629
630
631 \membersection{wxDC::GetLogicalFunction}\label{wxdcgetlogicalfunction}
632
633 \func{int}{GetLogicalFunction}{\void}
634
635 Gets the current logical function (see \helpref{wxDC::SetLogicalFunction}{wxdcsetlogicalfunction}).
636
637
638 \membersection{wxDC::GetMapMode}\label{wxdcgetmapmode}
639
640 \func{int}{GetMapMode}{\void}
641
642 Gets the {\it mapping mode} for the device context (see \helpref{wxDC::SetMapMode}{wxdcsetmapmode}).
643
644
645 \membersection{wxDC::GetPartialTextExtents}\label{wxdcgetpartialtextextents}
646
647 \constfunc{bool}{GetPartialTextExtents}{\param{const wxString\& }{text},
648 \param{wxArrayInt\& }{widths}}
649
650 Fills the {\it widths} array with the widths from the beginning of
651 {\it text} to the corresponding character of {\it text}. The generic
652 version simply builds a running total of the widths of each character
653 using \helpref{GetTextExtent}{wxdcgettextextent}, however if the
654 various platforms have a native API function that is faster or more
655 accurate than the generic implementation then it should be used
656 instead.
657
658 \pythonnote{This method only takes the {\it text} parameter and
659 returns a Python list of integers.}
660
661
662 \membersection{wxDC::GetPen}\label{wxdcgetpen}
663
664 \constfunc{const wxPen\&}{GetPen}{\void}
665
666 Gets the current pen (see \helpref{wxDC::SetPen}{wxdcsetpen}).
667
668
669 \membersection{wxDC::GetPixel}\label{wxdcgetpixel}
670
671 \func{bool}{GetPixel}{\param{wxCoord}{ x}, \param{wxCoord}{ y}, \param{wxColour *}{colour}}
672
673 Gets in {\it colour} the colour at the specified location.
674 Not available for wxPostScriptDC or wxMetafileDC.
675
676 Note that setting a pixel can be done using \helpref{DrawPoint}{wxdcdrawpoint}.
677
678 \pythonnote{For wxPython the wxColour value is returned and is not
679 required as a parameter.}
680
681 \perlnote{This method only takes the parameters {\tt x} and {\tt y} and returns
682 a Wx::Colour value}
683
684 \membersection{wxDC::GetPPI}\label{wxdcgetppi}
685
686 \constfunc{wxSize}{GetPPI}{\void}
687
688 Returns the resolution of the device in pixels per inch.
689
690 \membersection{wxDC::GetSize}\label{wxdcgetsize}
691
692 \constfunc{void}{GetSize}{\param{wxCoord *}{width}, \param{wxCoord *}{height}}
693
694 \constfunc{wxSize}{GetSize}{\void}
695
696 This gets the horizontal and vertical resolution in device units. It can be used to scale graphics to fit the page.
697 For example, if {\it maxX} and {\it maxY}\rtfsp
698 represent the maximum horizontal and vertical `pixel' values used in your
699 application, the following code will scale the graphic to fit on the
700 printer page:
701
702 \begin{verbatim}
703 wxCoord w, h;
704 dc.GetSize(&w, &h);
705 double scaleX=(double)(maxX/w);
706 double scaleY=(double)(maxY/h);
707 dc.SetUserScale(min(scaleX,scaleY),min(scaleX,scaleY));
708 \end{verbatim}
709
710 \pythonnote{In place of a single overloaded method name, wxPython
711 implements the following methods:\par
712 \indented{2cm}{\begin{twocollist}
713 \twocolitem{{\bf GetSize()}}{Returns a wxSize}
714 \twocolitem{{\bf GetSizeTuple()}}{Returns a 2-tuple (width, height)}
715 \end{twocollist}}
716 }
717
718 \perlnote{In place of a single overloaded method, wxPerl uses:\par
719 \indented{2cm}{\begin{twocollist}
720 \twocolitem{{\bf GetSize()}}{Returns a Wx::Size}
721 \twocolitem{{\bf GetSizeWH()}}{Returns a 2-element list
722 {\tt ( width, height )}}
723 \end{twocollist}
724 }}
725
726 \membersection{wxDC::GetSizeMM}\label{wxdcgetsizemm}
727
728 \constfunc{void}{GetSizeMM}{\param{wxCoord *}{width}, \param{wxCoord *}{height}}
729
730 \constfunc{wxSize}{GetSizeMM}{\void}
731
732 Returns the horizontal and vertical resolution in millimetres.
733
734 \membersection{wxDC::GetTextBackground}\label{wxdcgettextbackground}
735
736 \constfunc{const wxColour\&}{GetTextBackground}{\void}
737
738 Gets the current text background colour (see \helpref{wxDC::SetTextBackground}{wxdcsettextbackground}).
739
740
741 \membersection{wxDC::GetTextExtent}\label{wxdcgettextextent}
742
743 \func{void}{GetTextExtent}{\param{const wxString\& }{string}, \param{wxCoord *}{w}, \param{wxCoord *}{h},\\
744 \param{wxCoord *}{descent = NULL}, \param{wxCoord *}{externalLeading = NULL}, \param{wxFont *}{font = NULL}}
745
746 Gets the dimensions of the string using the currently selected font.
747 \rtfsp{\it string} is the text string to measure, {\it w} and {\it h} are
748 the total width and height respectively, {\it descent} is the
749 dimension from the baseline of the font to the bottom of the
750 descender, and {\it externalLeading} is any extra vertical space added
751 to the font by the font designer (usually is zero).
752
753 If the optional parameter {\it font} is specified and valid, then it is used
754 for the text extent calculation. Otherwise the currently selected font is.
755
756 See also \helpref{wxFont}{wxfont}, \helpref{wxDC::SetFont}{wxdcsetfont}.
757
758 \pythonnote{The following methods are implemented in wxPython:\par
759 \indented{2cm}{\begin{twocollist}
760 \twocolitem{{\bf GetTextExtent(string)}}{Returns a 2-tuple, (width, height)}
761 \twocolitem{{\bf GetFullTextExtent(string, font=NULL)}}{Returns a
762 4-tuple, (width, height, descent, externalLeading) }
763 \end{twocollist}}
764 }
765
766 \perlnote{In wxPerl this method is implemented as
767 {\bf GetTextExtent( string, font = undef )} returning a four element
768 array {\tt ( width, height, descent, externalLeading )}
769 }
770
771
772 \membersection{wxDC::GetTextForeground}\label{wxdcgettextforeground}
773
774 \constfunc{const wxColour\&}{GetTextForeground}{\void}
775
776 Gets the current text foreground colour (see \helpref{wxDC::SetTextForeground}{wxdcsettextforeground}).
777
778
779 \membersection{wxDC::GetUserScale}\label{wxdcgetuserscale}
780
781 \func{void}{GetUserScale}{\param{double}{ *x}, \param{double}{ *y}}
782
783 Gets the current user scale factor (set by \helpref{SetUserScale}{wxdcsetuserscale}).
784
785 \perlnote{In wxPerl this method takes no arguments and return a two element
786 array {\tt ( x, y )}}
787
788
789 \membersection{wxDC::GradientFillConcentric}\label{wxdcgradientfillconcentric}
790
791 \func{void}{GradientFillConcentric}{\param{const wxRect\&}{ rect}, \param{const wxColour\&}{ initialColour}, \param{const wxColour\&}{ destColour}}
792
793 \func{void}{GradientFillConcentric}{\param{const wxRect\&}{ rect}, \param{const wxColour\&}{ initialColour}, \param{const wxColour\&}{ destColour}, \param{const wxPoint\& }{circleCenter}}
794
795 Fill the area specified by rect with a radial gradient, starting from
796 \arg{initialColour} at the centre of the circle and fading to \arg{destColour}
797 on the circle outside.
798
799 \arg{circleCenter} are the relative coordinates of centre of the circle in
800 the specified \arg{rect}. If not specified, the cercle is placed at the
801 centre of rect.
802
803 \textbf{Note: } Currently this function is very slow, don't use it for
804 real-time drawing.
805
806
807 \membersection{wxDC::GradientFillLinear}\label{wxdcgradientfilllinear}
808
809 \func{void}{GradientFillLinear}{\param{const wxRect\&}{ rect}, \param{const wxColour\&}{ initialColour}, \param{const wxColour\&}{ destColour}, \param{wxDirection}{ nDirection = wxEAST}}
810
811 Fill the area specified by \arg{rect} with a linear gradient, starting from
812 \arg{initialColour} and eventually fading to \arg{destColour}. The
813 \arg{nDirection} specifies the direction of the colour change, default is to
814 use \arg{initialColour} on the left part of the rectangle and
815 \arg{destColour} on the right one.
816
817
818 \membersection{wxDC::LogicalToDeviceX}\label{wxdclogicaltodevicex}
819
820 \func{wxCoord}{LogicalToDeviceX}{\param{wxCoord}{ x}}
821
822 Converts logical X coordinate to device coordinate, using the current
823 mapping mode.
824
825
826 \membersection{wxDC::LogicalToDeviceXRel}\label{wxdclogicaltodevicexrel}
827
828 \func{wxCoord}{LogicalToDeviceXRel}{\param{wxCoord}{ x}}
829
830 Converts logical X coordinate to relative device coordinate, using the current
831 mapping mode but ignoring the x axis orientation.
832 Use this for converting a width, for example.
833
834
835 \membersection{wxDC::LogicalToDeviceY}\label{wxdclogicaltodevicey}
836
837 \func{wxCoord}{LogicalToDeviceY}{\param{wxCoord}{ y}}
838
839 Converts logical Y coordinate to device coordinate, using the current
840 mapping mode.
841
842
843 \membersection{wxDC::LogicalToDeviceYRel}\label{wxdclogicaltodeviceyrel}
844
845 \func{wxCoord}{LogicalToDeviceYRel}{\param{wxCoord}{ y}}
846
847 Converts logical Y coordinate to relative device coordinate, using the current
848 mapping mode but ignoring the y axis orientation.
849 Use this for converting a height, for example.
850
851
852 \membersection{wxDC::MaxX}\label{wxdcmaxx}
853
854 \func{wxCoord}{MaxX}{\void}
855
856 Gets the maximum horizontal extent used in drawing commands so far.
857
858
859 \membersection{wxDC::MaxY}\label{wxdcmaxy}
860
861 \func{wxCoord}{MaxY}{\void}
862
863 Gets the maximum vertical extent used in drawing commands so far.
864
865
866 \membersection{wxDC::MinX}\label{wxdcminx}
867
868 \func{wxCoord}{MinX}{\void}
869
870 Gets the minimum horizontal extent used in drawing commands so far.
871
872
873 \membersection{wxDC::MinY}\label{wxdcminy}
874
875 \func{wxCoord}{MinY}{\void}
876
877 Gets the minimum vertical extent used in drawing commands so far.
878
879
880 \membersection{wxDC::Ok}\label{wxdcok}
881
882 \func{bool}{Ok}{\void}
883
884 Returns true if the DC is ok to use.
885
886
887 \membersection{wxDC::ResetBoundingBox}\label{wxdcresetboundingbox}
888
889 \func{void}{ResetBoundingBox}{\void}
890
891 Resets the bounding box: after a call to this function, the bounding box
892 doesn't contain anything.
893
894 \wxheading{See also}
895
896 \helpref{CalcBoundingBox}{wxdccalcboundingbox}
897
898
899 \membersection{wxDC::SetAxisOrientation}\label{wxdcsetaxisorientation}
900
901 \func{void}{SetAxisOrientation}{\param{bool}{ xLeftRight},
902 \param{bool}{ yBottomUp}}
903
904 Sets the x and y axis orientation (i.e., the direction from lowest to
905 highest values on the axis). The default orientation is
906 x axis from left to right and y axis from top down.
907
908 \wxheading{Parameters}
909
910 \docparam{xLeftRight}{True to set the x axis orientation to the natural
911 left to right orientation, false to invert it.}
912
913 \docparam{yBottomUp}{True to set the y axis orientation to the natural
914 bottom up orientation, false to invert it.}
915
916
917 \membersection{wxDC::SetBackground}\label{wxdcsetbackground}
918
919 \func{void}{SetBackground}{\param{const wxBrush\& }{brush}}
920
921 Sets the current background brush for the DC.
922
923
924 \membersection{wxDC::SetBackgroundMode}\label{wxdcsetbackgroundmode}
925
926 \func{void}{SetBackgroundMode}{\param{int}{ mode}}
927
928 {\it mode} may be one of wxSOLID and wxTRANSPARENT. This setting determines
929 whether text will be drawn with a background colour or not.
930
931
932 \membersection{wxDC::SetBrush}\label{wxdcsetbrush}
933
934 \func{void}{SetBrush}{\param{const wxBrush\& }{brush}}
935
936 Sets the current brush for the DC.
937
938 If the argument is wxNullBrush, the current brush is selected out of the device
939 context, and the original brush restored, allowing the current brush to
940 be destroyed safely.
941
942 See also \helpref{wxBrush}{wxbrush}.
943
944 See also \helpref{wxMemoryDC}{wxmemorydc} for the interpretation of colours
945 when drawing into a monochrome bitmap.
946
947
948 \membersection{wxDC::SetClippingRegion}\label{wxdcsetclippingregion}
949
950 \func{void}{SetClippingRegion}{\param{wxCoord}{ x}, \param{wxCoord}{ y}, \param{wxCoord}{ width}, \param{wxCoord}{ height}}
951
952 \func{void}{SetClippingRegion}{\param{const wxPoint\& }{pt}, \param{const wxSize\& }{sz}}
953
954 \func{void}{SetClippingRegion}{\param{const wxRect\&}{ rect}}
955
956 \func{void}{SetClippingRegion}{\param{const wxRegion\&}{ region}}
957
958 Sets the clipping region for this device context to the intersection of the
959 given region described by the parameters of this method and the previously set
960 clipping region. You should call
961 \helpref{DestroyClippingRegion}{wxdcdestroyclippingregion} if you want to set
962 the clipping region exactly to the region specified.
963
964 The clipping region is an area to which drawing is restricted. Possible uses
965 for the clipping region are for clipping text or for speeding up window redraws
966 when only a known area of the screen is damaged.
967
968 \wxheading{See also}
969
970 \helpref{wxDC::DestroyClippingRegion}{wxdcdestroyclippingregion}, \helpref{wxRegion}{wxregion}
971
972
973 \membersection{wxDC::SetDeviceOrigin}\label{wxdcsetdeviceorigin}
974
975 \func{void}{SetDeviceOrigin}{\param{wxCoord}{ x}, \param{wxCoord}{ y}}
976
977 Sets the device origin (i.e., the origin in pixels after scaling has been
978 applied).
979
980 This function may be useful in Windows printing
981 operations for placing a graphic on a page.
982
983
984 \membersection{wxDC::SetFont}\label{wxdcsetfont}
985
986 \func{void}{SetFont}{\param{const wxFont\& }{font}}
987
988 Sets the current font for the DC. It must be a valid font, in particular you
989 should not pass {\tt wxNullFont} to this method.
990
991 See also \helpref{wxFont}{wxfont}.
992
993
994 \membersection{wxDC::SetLogicalFunction}\label{wxdcsetlogicalfunction}
995
996 \func{void}{SetLogicalFunction}{\param{int}{ function}}
997
998 Sets the current logical function for the device context. This determines how
999 a source pixel (from a pen or brush colour, or source device context if
1000 using \helpref{wxDC::Blit}{wxdcblit}) combines with a destination pixel in the
1001 current device context.
1002
1003 The possible values
1004 and their meaning in terms of source and destination pixel values are
1005 as follows:
1006
1007 \begin{verbatim}
1008 wxAND src AND dst
1009 wxAND_INVERT (NOT src) AND dst
1010 wxAND_REVERSE src AND (NOT dst)
1011 wxCLEAR 0
1012 wxCOPY src
1013 wxEQUIV (NOT src) XOR dst
1014 wxINVERT NOT dst
1015 wxNAND (NOT src) OR (NOT dst)
1016 wxNOR (NOT src) AND (NOT dst)
1017 wxNO_OP dst
1018 wxOR src OR dst
1019 wxOR_INVERT (NOT src) OR dst
1020 wxOR_REVERSE src OR (NOT dst)
1021 wxSET 1
1022 wxSRC_INVERT NOT src
1023 wxXOR src XOR dst
1024 \end{verbatim}
1025
1026 The default is wxCOPY, which simply draws with the current colour.
1027 The others combine the current colour and the background using a
1028 logical operation. wxINVERT is commonly used for drawing rubber bands or
1029 moving outlines, since drawing twice reverts to the original colour.
1030
1031
1032 \membersection{wxDC::SetMapMode}\label{wxdcsetmapmode}
1033
1034 \func{void}{SetMapMode}{\param{int}{ int}}
1035
1036 The {\it mapping mode} of the device context defines the unit of
1037 measurement used to convert logical units to device units. Note that
1038 in X, text drawing isn't handled consistently with the mapping mode; a
1039 font is always specified in point size. However, setting the {\it
1040 user scale} (see \helpref{wxDC::SetUserScale}{wxdcsetuserscale}) scales the text appropriately. In
1041 Windows, scalable TrueType fonts are always used; in X, results depend
1042 on availability of fonts, but usually a reasonable match is found.
1043
1044 The coordinate origin is always at the top left of the screen/printer.
1045
1046 Drawing to a Windows printer device context uses the current mapping mode,
1047 but mapping mode is currently ignored for PostScript output.
1048
1049 The mapping mode can be one of the following:
1050
1051 \begin{twocollist}\itemsep=0pt
1052 \twocolitem{wxMM\_TWIPS}{Each logical unit is 1/20 of a point, or 1/1440 of
1053 an inch.}
1054 \twocolitem{wxMM\_POINTS}{Each logical unit is a point, or 1/72 of an inch.}
1055 \twocolitem{wxMM\_METRIC}{Each logical unit is 1 mm.}
1056 \twocolitem{wxMM\_LOMETRIC}{Each logical unit is 1/10 of a mm.}
1057 \twocolitem{wxMM\_TEXT}{Each logical unit is 1 pixel.}
1058 \end{twocollist}
1059
1060
1061 \membersection{wxDC::SetPalette}\label{wxdcsetpalette}
1062
1063 \func{void}{SetPalette}{\param{const wxPalette\& }{palette}}
1064
1065 If this is a window DC or memory DC, assigns the given palette to the window
1066 or bitmap associated with the DC. If the argument is wxNullPalette, the current
1067 palette is selected out of the device context, and the original palette
1068 restored.
1069
1070 See \helpref{wxPalette}{wxpalette} for further details.
1071
1072
1073 \membersection{wxDC::SetPen}\label{wxdcsetpen}
1074
1075 \func{void}{SetPen}{\param{const wxPen\& }{pen}}
1076
1077 Sets the current pen for the DC.
1078
1079 If the argument is wxNullPen, the current pen is selected out of the device
1080 context, and the original pen restored.
1081
1082 See also \helpref{wxMemoryDC}{wxmemorydc} for the interpretation of colours
1083 when drawing into a monochrome bitmap.
1084
1085
1086 \membersection{wxDC::SetTextBackground}\label{wxdcsettextbackground}
1087
1088 \func{void}{SetTextBackground}{\param{const wxColour\& }{colour}}
1089
1090 Sets the current text background colour for the DC.
1091
1092
1093 \membersection{wxDC::SetTextForeground}\label{wxdcsettextforeground}
1094
1095 \func{void}{SetTextForeground}{\param{const wxColour\& }{colour}}
1096
1097 Sets the current text foreground colour for the DC.
1098
1099 See also \helpref{wxMemoryDC}{wxmemorydc} for the interpretation of colours
1100 when drawing into a monochrome bitmap.
1101
1102
1103 \membersection{wxDC::SetUserScale}\label{wxdcsetuserscale}
1104
1105 \func{void}{SetUserScale}{\param{double}{ xScale}, \param{double}{ yScale}}
1106
1107 Sets the user scaling factor, useful for applications which require
1108 `zooming'.
1109
1110
1111 \membersection{wxDC::StartDoc}\label{wxdcstartdoc}
1112
1113 \func{bool}{StartDoc}{\param{const wxString\& }{message}}
1114
1115 Starts a document (only relevant when outputting to a printer).
1116 Message is a message to show while printing.
1117
1118
1119 \membersection{wxDC::StartPage}\label{wxdcstartpage}
1120
1121 \func{bool}{StartPage}{\void}
1122
1123 Starts a document page (only relevant when outputting to a printer).
1124
1125 \section{\class{wxDCClipper}}\label{wxdcclipper}
1126
1127 This is a small helper class which sets the specified DC to its constructor
1128 clipping region and then automatically destroys it in its destructor. Using
1129 it ensures that an unwanted clipping region is not left set on the DC.
1130
1131 \wxheading{Derived from}
1132
1133 No base class
1134
1135 \wxheading{Include files}
1136
1137 <wx/dc.h>
1138
1139 \wxheading{See also}
1140
1141 \helpref{wxDC}{wxdc}
1142
1143 \latexignore{\rtfignore{\wxheading{Members}}}
1144
1145
1146 \membersection{wxDCClipper::wxDCClipper}\label{wxdcclipperctor}
1147
1148 \func{}{wxDCClipper}{\param{wxDC\& }{dc}, \param{wxCoord }{x},\param{wxCoord }{y},\param{wxCoord }{w},\param{wxCoord }{h},}
1149
1150 \func{}{wxDCClipper}{\param{wxDC\& }{dc}, \param{const wxRect\&}{ rect}}
1151
1152 Constructor: sets the clipping region for the given device context to the
1153 specified rectangle.
1154
1155
1156 \membersection{wxDCClipper::\destruct{wxDCClipper}}\label{wxdcclipperdtor}
1157
1158 \func{}{\destruct{wxDCClipper}}{\void}
1159
1160 Destructor: destroys the clipping region set in the constructor.
1161