git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@35797 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			426 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
			
		
		
	
	
			426 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
| %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 | |
| %% Name:        pen.tex
 | |
| %% Purpose:     wxPen docs
 | |
| %% Author:
 | |
| %% Modified by:
 | |
| %% Created:
 | |
| %% RCS-ID:      $Id$
 | |
| %% Copyright:   (c) wxWidgets
 | |
| %% License:     wxWindows license
 | |
| %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 | |
| 
 | |
| \section{\class{wxPen}}\label{wxpen}
 | |
| 
 | |
| A pen is a drawing tool for drawing outlines. It is used for drawing
 | |
| lines and painting the outline of rectangles, ellipses, etc. It has a
 | |
| colour, a width and a style.
 | |
| 
 | |
| \wxheading{Derived from}
 | |
| 
 | |
| \helpref{wxGDIObject}{wxgdiobject}\\
 | |
| \helpref{wxObject}{wxobject}
 | |
| 
 | |
| \wxheading{Include files}
 | |
| 
 | |
| <wx/pen.h>
 | |
| 
 | |
| \wxheading{Predefined objects}
 | |
| 
 | |
| Objects:
 | |
| 
 | |
| {\bf wxNullPen}
 | |
| 
 | |
| Pointers:
 | |
| 
 | |
| {\bf wxRED\_PEN\\
 | |
| wxCYAN\_PEN\\
 | |
| wxGREEN\_PEN\\
 | |
| wxBLACK\_PEN\\
 | |
| wxWHITE\_PEN\\
 | |
| wxTRANSPARENT\_PEN\\
 | |
| wxBLACK\_DASHED\_PEN\\
 | |
| wxGREY\_PEN\\
 | |
| wxMEDIUM\_GREY\_PEN\\
 | |
| wxLIGHT\_GREY\_PEN}
 | |
| 
 | |
| \wxheading{Remarks}
 | |
| 
 | |
| On a monochrome display, wxWidgets shows all non-white pens as black.
 | |
| 
 | |
| Do not initialize objects on the stack before the program commences,
 | |
| since other required structures may not have been set up yet. Instead,
 | |
| define global pointers to objects and create them in {\it OnInit} or
 | |
| when required.
 | |
| 
 | |
| An application may wish to dynamically create pens with different
 | |
| characteristics, and there is the consequent danger that a large number
 | |
| of duplicate pens will be created. Therefore an application may wish to
 | |
| get a pointer to a pen by using the global list of pens {\bf
 | |
| wxThePenList}, and calling the member function {\bf FindOrCreatePen}.
 | |
| See the entry for \helpref{wxPenList}{wxpenlist}.
 | |
| 
 | |
| wxPen uses a reference counting system, so assignments between brushes are very
 | |
| cheap. You can therefore use actual wxPen objects instead of pointers without
 | |
| efficiency problems. Once one wxPen object changes its data it will create its
 | |
| own pen data internally so that other pens, which previously shared the
 | |
| data using the reference counting, are not affected.
 | |
| 
 | |
| %TODO: an overview for wxPen.
 | |
| \wxheading{See also}
 | |
| 
 | |
| \helpref{wxPenList}{wxpenlist}, \helpref{wxDC}{wxdc}, \helpref{wxDC::SetPen}{wxdcsetpen}
 | |
| 
 | |
| \latexignore{\rtfignore{\wxheading{Members}}}
 | |
| 
 | |
| \membersection{wxPen::wxPen}\label{wxpenctor}
 | |
| 
 | |
| \func{}{wxPen}{\void}
 | |
| 
 | |
| Default constructor. The pen will be uninitialised, and \helpref{wxPen::Ok}{wxpenok} will
 | |
| return false.
 | |
| 
 | |
| \func{}{wxPen}{\param{const wxColour\&}{ colour}, \param{int}{ width = $1$}, \param{int}{ style = {\tt wxSOLID}}}
 | |
| 
 | |
| Constructs a pen from a colour object, pen width and style.
 | |
| 
 | |
| \func{}{wxPen}{\param{const wxString\& }{colourName}, \param{int}{ width}, \param{int}{ style}}
 | |
| 
 | |
| Constructs a pen from a colour name, pen width and style.
 | |
| 
 | |
| \func{}{wxPen}{\param{const wxBitmap\&}{ stipple}, \param{int}{ width}}
 | |
| 
 | |
| Constructs a stippled pen from a stipple bitmap and a width.
 | |
| 
 | |
| \func{}{wxPen}{\param{const wxPen\&}{ pen}}
 | |
| 
 | |
| Copy constructor. This uses reference counting so is a cheap operation.
 | |
| 
 | |
| \wxheading{Parameters}
 | |
| 
 | |
| \docparam{colour}{A colour object.}
 | |
| 
 | |
| \docparam{colourName}{A colour name.}
 | |
| 
 | |
| \docparam{width}{Pen width. Under Windows, the pen width cannot be greater than 1 if
 | |
| the style is wxDOT, wxLONG\_DASH, wxSHORT\_DASH, wxDOT\_DASH, or wxUSER\_DASH.}
 | |
| 
 | |
| \docparam{stipple}{A stipple bitmap.}
 | |
| 
 | |
| \docparam{pen}{A pointer or reference to a pen to copy.}
 | |
| 
 | |
| \docparam{style}{The style may be one of the following:
 | |
| 
 | |
| \begin{twocollist}\itemsep=0pt
 | |
| \twocolitem{{\bf wxSOLID}}{Solid style.}
 | |
| \twocolitem{{\bf wxTRANSPARENT}}{No pen is used.}
 | |
| \twocolitem{{\bf wxDOT}}{Dotted style.}
 | |
| \twocolitem{{\bf wxLONG\_DASH}}{Long dashed style.}
 | |
| \twocolitem{{\bf wxSHORT\_DASH}}{Short dashed style.}
 | |
| \twocolitem{{\bf wxDOT\_DASH}}{Dot and dash style.}
 | |
| \twocolitem{{\bf wxSTIPPLE}}{Use the stipple bitmap.}
 | |
| \twocolitem{{\bf wxUSER\_DASH}}{Use the user dashes: see \helpref{wxPen::SetDashes}{wxpensetdashes}.}
 | |
| \twocolitem{{\bf wxBDIAGONAL\_HATCH}}{Backward diagonal hatch.}
 | |
| \twocolitem{{\bf wxCROSSDIAG\_HATCH}}{Cross-diagonal hatch.}
 | |
| \twocolitem{{\bf wxFDIAGONAL\_HATCH}}{Forward diagonal hatch.}
 | |
| \twocolitem{{\bf wxCROSS\_HATCH}}{Cross hatch.}
 | |
| \twocolitem{{\bf wxHORIZONTAL\_HATCH}}{Horizontal hatch.}
 | |
| \twocolitem{{\bf wxVERTICAL\_HATCH}}{Vertical hatch.}
 | |
| \end{twocollist}}
 | |
| 
 | |
| \wxheading{Remarks}
 | |
| 
 | |
| Different versions of Windows and different versions of other platforms
 | |
| support {\it very} different subsets of the styles above - there is no
 | |
| similarity even between Windows95 and Windows98 - so handle with care.
 | |
| 
 | |
| If the named colour form is used, an appropriate {\bf wxColour} structure
 | |
| is found in the colour database.
 | |
| 
 | |
| \wxheading{See also}
 | |
| 
 | |
| \helpref{wxPen::SetStyle}{wxpensetstyle}, \helpref{wxPen::SetColour}{wxpensetcolour},\rtfsp
 | |
| \helpref{wxPen::SetWidth}{wxpensetwidth}, \helpref{wxPen::SetStipple}{wxpensetstipple}
 | |
| 
 | |
| \perlnote{Constructors supported by wxPerl are:\par
 | |
| \begin{itemize}
 | |
| \item{Wx::Pen->new( colour, width, style )}
 | |
| \item{Wx::Pen->new( colourName, width, style )}
 | |
| \item{Wx::Pen->new( stipple, width )}
 | |
| \end{itemize}
 | |
| }
 | |
| 
 | |
| \membersection{wxPen::\destruct{wxPen}}\label{wxpendtor}
 | |
| 
 | |
| \func{}{\destruct{wxPen}}{\void}
 | |
| 
 | |
| Destructor.
 | |
| 
 | |
| \wxheading{Remarks}
 | |
| 
 | |
| The destructor may not delete the underlying pen object of the native windowing
 | |
| system, since wxBrush uses a reference counting system for efficiency.
 | |
| 
 | |
| Although all remaining pens are deleted when the application exits,
 | |
| the application should try to clean up all pens itself. This is because
 | |
| wxWidgets cannot know if a pointer to the pen object is stored in an
 | |
| application data structure, and there is a risk of double deletion.
 | |
| 
 | |
| \membersection{wxPen::GetCap}\label{wxpengetcap}
 | |
| 
 | |
| \constfunc{int}{GetCap}{\void}
 | |
| 
 | |
| Returns the pen cap style, which may be one of {\bf wxCAP\_ROUND}, {\bf wxCAP\_PROJECTING} and
 | |
| \rtfsp{\bf wxCAP\_BUTT}. The default is {\bf wxCAP\_ROUND}.
 | |
| 
 | |
| \wxheading{See also}
 | |
| 
 | |
| \helpref{wxPen::SetCap}{wxpensetcap}
 | |
| 
 | |
| \membersection{wxPen::GetColour}\label{wxpengetcolour}
 | |
| 
 | |
| \constfunc{wxColour\&}{GetColour}{\void}
 | |
| 
 | |
| Returns a reference to the pen colour.
 | |
| 
 | |
| \wxheading{See also}
 | |
| 
 | |
| \helpref{wxPen::SetColour}{wxpensetcolour}
 | |
| 
 | |
| \membersection{wxPen::GetDashes}\label{wxpengetdashes}
 | |
| 
 | |
| \constfunc{int}{GetDashes}{\param{wxDash**}{ dashes}}
 | |
| 
 | |
| Gets an array of dashes (defined as char in X, DWORD under Windows).
 | |
| {\it dashes} is a pointer to the internal array. Do not deallocate or store this pointer.
 | |
| The function returns the number of dashes associated with this pen.
 | |
| 
 | |
| \wxheading{See also}
 | |
| 
 | |
| \helpref{wxPen::SetDashes}{wxpensetdashes}
 | |
| 
 | |
| \membersection{wxPen::GetJoin}\label{wxpengetjoin}
 | |
| 
 | |
| \constfunc{int}{GetJoin}{\void}
 | |
| 
 | |
| Returns the pen join style, which may be one of {\bf wxJOIN\_BEVEL}, {\bf wxJOIN\_ROUND} and
 | |
| \rtfsp{\bf wxJOIN\_MITER}. The default is {\bf wxJOIN\_ROUND}.
 | |
| 
 | |
| \wxheading{See also}
 | |
| 
 | |
| \helpref{wxPen::SetJoin}{wxpensetjoin}
 | |
| 
 | |
| \membersection{wxPen::GetStipple}\label{wxpengetstipple}
 | |
| 
 | |
| \constfunc{wxBitmap* }{GetStipple}{\void}
 | |
| 
 | |
| Gets a pointer to the stipple bitmap.
 | |
| 
 | |
| \wxheading{See also}
 | |
| 
 | |
| \helpref{wxPen::SetStipple}{wxpensetstipple}
 | |
| 
 | |
| \membersection{wxPen::GetStyle}\label{wxpengetstyle}
 | |
| 
 | |
| \constfunc{int}{GetStyle}{\void}
 | |
| 
 | |
| Returns the pen style.
 | |
| 
 | |
| \wxheading{See also}
 | |
| 
 | |
| \helpref{wxPen::wxPen}{wxpenctor}, \helpref{wxPen::SetStyle}{wxpensetstyle}
 | |
| 
 | |
| \membersection{wxPen::GetWidth}\label{wxpengetwidth}
 | |
| 
 | |
| \constfunc{int}{GetWidth}{\void}
 | |
| 
 | |
| Returns the pen width.
 | |
| 
 | |
| \wxheading{See also}
 | |
| 
 | |
| \helpref{wxPen::SetWidth}{wxpensetwidth}
 | |
| 
 | |
| \membersection{wxPen::Ok}\label{wxpenok}
 | |
| 
 | |
| \constfunc{bool}{Ok}{\void}
 | |
| 
 | |
| Returns true if the pen is initialised.
 | |
| 
 | |
| \membersection{wxPen::SetCap}\label{wxpensetcap}
 | |
| 
 | |
| \func{void}{SetCap}{\param{int}{ capStyle}}
 | |
| 
 | |
| Sets the pen cap style, which may be one of {\bf wxCAP\_ROUND}, {\bf wxCAP\_PROJECTING} and
 | |
| \rtfsp{\bf wxCAP\_BUTT}. The default is {\bf wxCAP\_ROUND}.
 | |
| 
 | |
| \wxheading{See also}
 | |
| 
 | |
| \helpref{wxPen::GetCap}{wxpengetcap}
 | |
| 
 | |
| \membersection{wxPen::SetColour}\label{wxpensetcolour}
 | |
| 
 | |
| \func{void}{SetColour}{\param{wxColour\&}{ colour}}
 | |
| 
 | |
| \func{void}{SetColour}{\param{const wxString\& }{colourName}}
 | |
| 
 | |
| \func{void}{SetColour}{\param{unsigned char}{ red}, \param{unsigned char}{ green}, \param{unsigned char}{ blue}}
 | |
| 
 | |
| The pen's colour is changed to the given colour.
 | |
| 
 | |
| \wxheading{See also}
 | |
| 
 | |
| \helpref{wxPen::GetColour}{wxpengetcolour}
 | |
| 
 | |
| \membersection{wxPen::SetDashes}\label{wxpensetdashes}
 | |
| 
 | |
| \func{void}{SetDashes}{\param{int }{n}, \param{wxDash*}{ dashes}}
 | |
| 
 | |
| Associates an array of pointers to dashes (defined as char in X, DWORD under Windows)
 | |
| with the pen. The array is not deallocated by wxPen, but neither must it be
 | |
| deallocated by the calling application until the pen is deleted or this
 | |
| function is called with a NULL array.
 | |
| 
 | |
| %TODO: describe in detail.
 | |
| \wxheading{See also}
 | |
| 
 | |
| \helpref{wxPen::GetDashes}{wxpengetdashes}
 | |
| 
 | |
| \membersection{wxPen::SetJoin}\label{wxpensetjoin}
 | |
| 
 | |
| \func{void}{SetJoin}{\param{int }{join\_style}}
 | |
| 
 | |
| Sets the pen join style, which may be one of {\bf wxJOIN\_BEVEL}, {\bf wxJOIN\_ROUND} and
 | |
| \rtfsp{\bf wxJOIN\_MITER}. The default is {\bf wxJOIN\_ROUND}.
 | |
| 
 | |
| \wxheading{See also}
 | |
| 
 | |
| \helpref{wxPen::GetJoin}{wxpengetjoin}
 | |
| 
 | |
| \membersection{wxPen::SetStipple}\label{wxpensetstipple}
 | |
| 
 | |
| \func{void}{SetStipple}{\param{wxBitmap* }{stipple}}
 | |
| 
 | |
| Sets the bitmap for stippling.
 | |
| 
 | |
| \wxheading{See also}
 | |
| 
 | |
| \helpref{wxPen::GetStipple}{wxpengetstipple}
 | |
| 
 | |
| \membersection{wxPen::SetStyle}\label{wxpensetstyle}
 | |
| 
 | |
| \func{void}{SetStyle}{\param{int}{ style}}
 | |
| 
 | |
| Set the pen style.
 | |
| 
 | |
| \wxheading{See also}
 | |
| 
 | |
| \helpref{wxPen::wxPen}{wxpenctor}
 | |
| 
 | |
| \membersection{wxPen::SetWidth}\label{wxpensetwidth}
 | |
| 
 | |
| \func{void}{SetWidth}{\param{int}{ width}}
 | |
| 
 | |
| Sets the pen width.
 | |
| 
 | |
| \wxheading{See also}
 | |
| 
 | |
| \helpref{wxPen::GetWidth}{wxpengetwidth}
 | |
| 
 | |
| \membersection{wxPen::operator $=$}\label{wxpenassignment}
 | |
| 
 | |
| \func{wxPen\&}{operator $=$}{\param{const wxPen\& }{pen}}
 | |
| 
 | |
| Assignment operator, using reference counting. Returns a reference
 | |
| to `this'.
 | |
| 
 | |
| \membersection{wxPen::operator $==$}\label{wxpenequals}
 | |
| 
 | |
| \func{bool}{operator $==$}{\param{const wxPen\& }{pen}}
 | |
| 
 | |
| Equality operator. Two pens are equal if they contain pointers
 | |
| to the same underlying pen data. It does not compare each attribute,
 | |
| so two independently-created pens using the same parameters will
 | |
| fail the test.
 | |
| 
 | |
| \membersection{wxPen::operator $!=$}\label{wxpennotequals}
 | |
| 
 | |
| \func{bool}{operator $!=$}{\param{const wxPen\& }{pen}}
 | |
| 
 | |
| Inequality operator. Two pens are not equal if they contain pointers
 | |
| to different underlying pen data. It does not compare each attribute.
 | |
| 
 | |
| \section{\class{wxPenList}}\label{wxpenlist}
 | |
| 
 | |
| There is only one instance of this class: {\bf wxThePenList}.  Use
 | |
| this object to search for a previously created pen of the desired
 | |
| type and create it if not already found. In some windowing systems,
 | |
| the pen may be a scarce resource, so it can pay to reuse old
 | |
| resources if possible. When an application finishes, all pens will
 | |
| be deleted and their resources freed, eliminating the possibility of
 | |
| `memory leaks'. However, it is best not to rely on this automatic
 | |
| cleanup because it can lead to double deletion in some circumstances.
 | |
| 
 | |
| There are two mechanisms in recent versions of wxWidgets which make the
 | |
| pen list less useful than it once was. Under Windows, scarce resources
 | |
| are cleaned up internally if they are not being used. Also, a referencing
 | |
| counting mechanism applied to all GDI objects means that some sharing
 | |
| of underlying resources is possible. You don't have to keep track of pointers,
 | |
| working out when it is safe delete a pen, because the referencing counting does
 | |
| it for you. For example, you can set a pen in a device context, and then
 | |
| immediately delete the pen you passed, because the pen is `copied'.
 | |
| 
 | |
| So you may find it easier to ignore the pen list, and instead create
 | |
| and copy pens as you see fit. If your Windows resource meter suggests
 | |
| your application is using too many resources, you can resort to using
 | |
| GDI lists to share objects explicitly.
 | |
| 
 | |
| The only compelling use for the pen list is for wxWidgets to keep
 | |
| track of pens in order to clean them up on exit. It is also kept for
 | |
| backward compatibility with earlier versions of wxWidgets.
 | |
| 
 | |
| \wxheading{See also}
 | |
| 
 | |
| \helpref{wxPen}{wxpen}
 | |
| 
 | |
| \latexignore{\rtfignore{\wxheading{Members}}}
 | |
| 
 | |
| \membersection{wxPenList::wxPenList}\label{wxpenlistctor}
 | |
| 
 | |
| \func{void}{wxPenList}{\void}
 | |
| 
 | |
| Constructor. The application should not construct its own pen list:
 | |
| use the object pointer {\bf wxThePenList}.
 | |
| 
 | |
| \membersection{wxPenList::AddPen}\label{wxpenlistaddpen}
 | |
| 
 | |
| \func{void}{AddPen}{\param{wxPen*}{ pen}}
 | |
| 
 | |
| Used internally by wxWidgets to add a pen to the list.
 | |
| 
 | |
| \membersection{wxPenList::FindOrCreatePen}\label{wxpenlistfindorcreatepen}
 | |
| 
 | |
| \func{wxPen*}{FindOrCreatePen}{\param{const wxColour\& }{colour}, \param{int}{ width}, \param{int}{ style}}
 | |
| 
 | |
| Finds a pen with the specified attributes and returns it, else creates a new pen, adds it
 | |
| to the pen list, and returns it.
 | |
| 
 | |
| \func{wxPen*}{FindOrCreatePen}{\param{const wxString\& }{colourName}, \param{int}{ width}, \param{int}{ style}}
 | |
| 
 | |
| Finds a pen with the specified attributes and returns it, else creates a new pen, adds it
 | |
| to the pen list, and returns it.
 | |
| 
 | |
| \wxheading{Parameters}
 | |
| 
 | |
| \docparam{colour}{Colour object.}
 | |
| 
 | |
| \docparam{colourName}{Colour name, which should be in the \helpref{colour database}{wxcolourdatabase}.}
 | |
| 
 | |
| \docparam{width}{Width of pen.}
 | |
| 
 | |
| \docparam{style}{Pen style. See \helpref{wxPen::wxPen}{wxpenctor} for a list of styles.}
 | |
| 
 | |
| \membersection{wxPenList::RemovePen}\label{wxpenlistremovepen}
 | |
| 
 | |
| \func{void}{RemovePen}{\param{wxPen*}{ pen}}
 | |
| 
 | |
| Used by wxWidgets to remove a pen from the list.
 |