<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <meta http-equiv="Content-Type" value="application/xhtml+xml" />
  <meta name="verify-v1" content="g222frIIxcQTrvDR3NBRUSKP3AnMNoqxOkIniCEkV7U=" />
  <link rel="meta" type="application/rdf+xml" title="ICI" href="http://imagemagick.org/ici.rdf" />
  <style type="text/css" media="screen,projection"><!--
    @import url("../../www/magick.css");
  --></style>
  <link rel="shortcut icon" href="../../images/wand.ico"  type="images/vnd.microsoft.icon"/>
  <title>ImageMagick: MagickWand, C API for ImageMagick: Drawing Wand Methods</title>
  <meta http-equiv="Content-Language" content="en-US"/>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  <meta http-equiv="Reply-to" content="magick-users@imagemagick.org"/>
  <meta name="Generator" content="PHP"/>
  <meta name="Keywords" content="magickwc, api, for, imagemagick:, drawing, wmethods, ImageMagick, ImageMagic, MagickCore, MagickWand, PerlMagick, Magick++, RMagick, PythonMagick, JMagick, TclMagick, Image, Magick, Magic, Wand, ImageMagickObject, Swiss, Army, Knife, Image, Processing"/>
  <meta name="Description" content="ImageMagick® is a software suite to create, edit, and compose bitmap images. It can read, convert and write images in a variety of formats (about 100) including GIF, JPEG, JPEG-2000, PNG, PDF, PhotoCD, TIFF, and DPX. Use ImageMagick to translate, flip, mirror, rotate, scale, shear and transform images, adjust image colors, apply various special effects, or draw text, lines, polygons, ellipses and Bézier curves.  ImageMagick is free software delivered as a ready-to-run binary distribution or as source code that you can freely use, copy, modify, and distribute. Its license is compatible with the GPL. It runs on all major operating systems.  The functionality of ImageMagick is typically utilized from the command line or you can use the features from programs written in your favorite programming language. Choose from these interfaces: MagickCore (C), MagickWand (C), ChMagick (Ch), Magick++ (C++), JMagick (Java), L-Magick (Lisp), PascalMagick (Pascal), PerlMagick (Perl), MagickWand for PHP (PHP), PythonMagick (Python), RMagick (Ruby), or TclMagick (Tcl/TK). With a language interface, use ImageMagick to modify or create images automagically and dynamically."/>
  <meta name="Rating" content="GENERAL"/>
  <meta name="Robots" content="INDEX, FOLLOW"/>
  <meta name="Generator" content="ImageMagick Studio LLC"/>
  <meta name="Author" content="ImageMagick Studio LLC"/>
  <meta name="Revisit-after" content="2 DAYS"/>
  <meta name="Resource-type" content="document"/>
  <meta name="Copyright" content="Copyright (c) 1999-2010 ImageMagick Studio LLC"/>
  <meta name="Distribution" content="Global"/>
</head>

<body id="www-imagemagick-org">
<div class="titlebar">
<a href="../../index.html">
  <img src="../../images/script.png" alt="[ImageMagick]"
  style="width: 350px; height: 60px; margin: 28px auto; float: left;" /></a>
<a href="http://www.networkredux.com">
  <img src="../../images/networkredux.png" alt="[sponsor]"
  style="margin: 45px auto; border: 0px; float: left;" /></a>
<a href="http://www.imagemagick.org/discourse-server/">
  <img src="../../images/logo.jpg" alt=""
  style="width: 114px; height: 118px; border: 0px; float: right;" /></a>
<a href="../../index.html">
  <img src="../../images/sprite.jpg" alt=""
  style="width: 114px; height: 118px; border: 0px; float: right;" /></a>
</div>

<div class="eastbar">

<div class="menu">
  <a href="../../index.html">About ImageMagick</a>
</div>
<div class="sep"></div>
<div class="menu">
  <a href="../../www/command-line-tools.html">Command-line Tools</a>
</div>
<div class="sub">
    <a href="../../www/command-line-processing.html">Processing</a>
</div>
<div class="sub">
    <a href="../../www/command-line-options.html">Options</a>
</div>
<div class="sub">
    <a href="http://www.imagemagick.org/Usage/">Usage</a>
</div>
<div class="menu">
  <a href="../../www/api.html">Program Interfaces</a>
</div>
<div class="sub">
    <a href="../../www/magick-wand.html">MagickWand</a>
</div>
<div class="sub">
    <a href="../../www/magick-core.html">MagickCore</a>
</div>
<div class="sub">
    <a href="../../www/perl-magick.html">PerlMagick</a>
</div>
<div class="sub">
    <a href="../../Magick++/">Magick++</a>
</div>
<div class="menu">
  <a href="../../www/architecture.html">Architecture</a>
</div>
<div class="sep"></div>
<div  class="menu">
   <a href="../../www/install-source.html">Install from Source</a>
</div>
<div class="sub">
    <a href="../../www/install-source.html#unix">Unix</a>
</div>
<div class="sub">
    <a href="../../www/install-source.html#windows">Windows</a>
 </div>
<div class="menu">
  <a href="../../www/binary-releases.html">Binary Releases</a>
</div>
<div class="sub">
    <a href="../../www/binary-releases.html#unix">Unix</a>
</div>
<div class="sub">
    <a href="../../www/binary-releases.html#macosx">Mac OS X</a>
</div>
<div class="sub">
    <a href="../../www/binary-releases.html#windows">Windows</a>
</div>
<div class="menu">
  <a href="../../www/resources.html">Resources</a>
</div>
<div class="sep"></div>
<div class="menu">
  <a href="../../www/download.html">Download</a>
</div>
<div class="sep"></div>
<div class="menu">
  <a href="../http://www.imagemagick.org/script/search.php">Search</a>
</div>
<div class="sep"></div>
<div class="menu">
  <a href="../../www/sitemap.html">Site Map</a>
</div>
<div  class="sub">
    <a href="../../www/links.html">Links</a>
</div>
<div class="sep"></div>
<div  class="menu">
  <a href="../../www/sponsors.html">Sponsors:</a>

<div class="sponsbox">
<div  class="sponsor">
   <a href="http://www.hygi.de">Reinigungsmittel</a><!-- 201002000400+ -->
</div>
<div  class="sponsor">
  <a href="http://www.tomsgutscheine.de">Tom's Gutscheine</a><!-- 201005010360 invendio.de-->
</div>
<div  class="sponsor">
  <a href="http://www.online-kredit-index.de">Kredit</a><!-- 201006010120 Buchhorn -->
</div>
<div  class="sponsor">
  <a href="http://www.blumenversender.com">Blumenversand</a><!-- 201005010120 -->
</div>
<div  class="sponsor">
  <a href="http://www.print24.de/">Druckerei</a><!-- 201009010720 -->
</div>
<div  class="sponsor">
   <a href="http://www.goyax.de">Börse</a><!-- 201004010240 Gewiese digital-finance.de -->
</div>
<div  class="sponsor">
   <a href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
<div  class="sponsor">
  <a href="http://www.who-sells-it.com/">Free Catalogs</a><!-- 201002010000 -->
</div>
</div>
</div>


</div>

<div class="main">

<p class="navigation-index">[<a href="#ClearDrawingWand">ClearDrawingWand</a> &bull; <a href="#CloneDrawingWand">CloneDrawingWand</a> &bull; <a href="#DestroyDrawingWand">DestroyDrawingWand</a> &bull; <a href="#DrawAffine">DrawAffine</a> &bull; <a href="#DrawAnnotation">DrawAnnotation</a> &bull; <a href="#DrawArc">DrawArc</a> &bull; <a href="#DrawBezier">DrawBezier</a> &bull; <a href="#DrawCircle">DrawCircle</a> &bull; <a href="#DrawClearException">DrawClearException</a> &bull; <a href="#DrawComposite">DrawComposite</a> &bull; <a href="#DrawColor">DrawColor</a> &bull; <a href="#DrawComment">DrawComment</a> &bull; <a href="#DrawEllipse">DrawEllipse</a> &bull; <a href="#DrawGetBorderColor">DrawGetBorderColor</a> &bull; <a href="#DrawGetClipPath">DrawGetClipPath</a> &bull; <a href="#DrawGetClipRule">DrawGetClipRule</a> &bull; <a href="#DrawGetClipUnits">DrawGetClipUnits</a> &bull; <a href="#DrawGetException">DrawGetException</a> &bull; <a href="#DrawGetExceptionType">DrawGetExceptionType</a> &bull; <a href="#DrawGetFillColor">DrawGetFillColor</a> &bull; <a href="#DrawGetFillOpacity">DrawGetFillOpacity</a> &bull; <a href="#DrawGetFillRule">DrawGetFillRule</a> &bull; <a href="#DrawGetFont">DrawGetFont</a> &bull; <a href="#DrawGetFontFamily">DrawGetFontFamily</a> &bull; <a href="#DrawGetFontSize">DrawGetFontSize</a> &bull; <a href="#DrawGetFontStretch">DrawGetFontStretch</a> &bull; <a href="#DrawGetFontStyle">DrawGetFontStyle</a> &bull; <a href="#DrawGetFontWeight">DrawGetFontWeight</a> &bull; <a href="#DrawGetGravity">DrawGetGravity</a> &bull; <a href="#DrawGetOpacity">DrawGetOpacity</a> &bull; <a href="#DrawGetStrokeAntialias">DrawGetStrokeAntialias</a> &bull; <a href="#DrawGetStrokeColor">DrawGetStrokeColor</a> &bull; <a href="#DrawGetStrokeDashArray">DrawGetStrokeDashArray</a> &bull; <a href="#DrawGetStrokeDashOffset">DrawGetStrokeDashOffset</a> &bull; <a href="#DrawGetStrokeLineCap">DrawGetStrokeLineCap</a> &bull; <a href="#DrawGetStrokeLineJoin">DrawGetStrokeLineJoin</a> &bull; <a href="#DrawGetStrokeMiterLimit">DrawGetStrokeMiterLimit</a> &bull; <a href="#DrawGetStrokeOpacity">DrawGetStrokeOpacity</a> &bull; <a href="#DrawGetStrokeWidth">DrawGetStrokeWidth</a> &bull; <a href="#DrawGetTextAlignment">DrawGetTextAlignment</a> &bull; <a href="#DrawGetTextAntialias">DrawGetTextAntialias</a> &bull; <a href="#DrawGetTextDecoration">DrawGetTextDecoration</a> &bull; <a href="#DrawGetTextEncoding">DrawGetTextEncoding</a> &bull; <a href="#DrawGetTextKerning">DrawGetTextKerning</a> &bull; <a href="#DrawGetTextInterwordSpacing">DrawGetTextInterwordSpacing</a> &bull; <a href="#DrawGetTextInterwordSpacing">DrawGetTextInterwordSpacing</a> &bull; <a href="#DrawGetVectorGraphics">DrawGetVectorGraphics</a> &bull; <a href="#DrawGetTextUnderColor">DrawGetTextUnderColor</a> &bull; <a href="#DrawLine">DrawLine</a> &bull; <a href="#DrawMatte">DrawMatte</a> &bull; <a href="#DrawPathClose">DrawPathClose</a> &bull; <a href="#DrawPathCurveToAbsolute">DrawPathCurveToAbsolute</a> &bull; <a href="#DrawPathCurveToRelative">DrawPathCurveToRelative</a> &bull; <a href="#DrawPathCurveToQuadraticBezierAbsolute">DrawPathCurveToQuadraticBezierAbsolute</a> &bull; <a href="#DrawPathCurveToQuadraticBezierRelative">DrawPathCurveToQuadraticBezierRelative</a> &bull; <a href="#DrawPathCurveToQuadraticBezierSmoothAbsolute">DrawPathCurveToQuadraticBezierSmoothAbsolute</a> &bull; <a href="#DrawPathCurveToQuadraticBezierSmoothAbsolute">DrawPathCurveToQuadraticBezierSmoothAbsolute</a> &bull; <a href="#DrawPathCurveToSmoothAbsolute">DrawPathCurveToSmoothAbsolute</a> &bull; <a href="#DrawPathCurveToSmoothRelative">DrawPathCurveToSmoothRelative</a> &bull; <a href="#DrawPathEllipticArcAbsolute">DrawPathEllipticArcAbsolute</a> &bull; <a href="#DrawPathEllipticArcRelative">DrawPathEllipticArcRelative</a> &bull; <a href="#DrawPathFinish">DrawPathFinish</a> &bull; <a href="#DrawPathLineToAbsolute">DrawPathLineToAbsolute</a> &bull; <a href="#DrawPathLineToRelative">DrawPathLineToRelative</a> &bull; <a href="#DrawPathLineToHorizontalAbsolute">DrawPathLineToHorizontalAbsolute</a> &bull; <a href="#DrawPathLineToHorizontalRelative">DrawPathLineToHorizontalRelative</a> &bull; <a href="#DrawPathLineToVerticalAbsolute">DrawPathLineToVerticalAbsolute</a> &bull; <a href="#DrawPathLineToVerticalRelative">DrawPathLineToVerticalRelative</a> &bull; <a href="#DrawPathMoveToAbsolute">DrawPathMoveToAbsolute</a> &bull; <a href="#DrawPathMoveToRelative">DrawPathMoveToRelative</a> &bull; <a href="#DrawPathStart">DrawPathStart</a> &bull; <a href="#DrawPoint">DrawPoint</a> &bull; <a href="#DrawPolygon">DrawPolygon</a> &bull; <a href="#DrawPolyline">DrawPolyline</a> &bull; <a href="#DrawPopClipPath">DrawPopClipPath</a> &bull; <a href="#DrawPopDefs">DrawPopDefs</a> &bull; <a href="#DrawPopPattern">DrawPopPattern</a> &bull; <a href="#DrawPushClipPath">DrawPushClipPath</a> &bull; <a href="#DrawPushDefs">DrawPushDefs</a> &bull; <a href="#DrawPushPattern">DrawPushPattern</a> &bull; <a href="#DrawRectangle">DrawRectangle</a> &bull; <a href="#DrawResetVectorGraphics">DrawResetVectorGraphics</a> &bull; <a href="#DrawRotate">DrawRotate</a> &bull; <a href="#DrawRoundRectangle">DrawRoundRectangle</a> &bull; <a href="#DrawScale">DrawScale</a> &bull; <a href="#DrawSetBorderColor">DrawSetBorderColor</a> &bull; <a href="#DrawSetClipPath">DrawSetClipPath</a> &bull; <a href="#DrawSetClipRule">DrawSetClipRule</a> &bull; <a href="#DrawSetClipUnits">DrawSetClipUnits</a> &bull; <a href="#DrawSetFillColor">DrawSetFillColor</a> &bull; <a href="#DrawSetFillOpacity">DrawSetFillOpacity</a> &bull; <a href="#DrawSetOpacity">DrawSetOpacity</a> &bull; <a href="#DrawSetFillPatternURL">DrawSetFillPatternURL</a> &bull; <a href="#DrawSetFillRule">DrawSetFillRule</a> &bull; <a href="#DrawSetFont">DrawSetFont</a> &bull; <a href="#DrawSetFontFamily">DrawSetFontFamily</a> &bull; <a href="#DrawSetFontSize">DrawSetFontSize</a> &bull; <a href="#DrawSetFontStretch">DrawSetFontStretch</a> &bull; <a href="#DrawSetFontStyle">DrawSetFontStyle</a> &bull; <a href="#DrawSetFontWeight">DrawSetFontWeight</a> &bull; <a href="#DrawSetGravity">DrawSetGravity</a> &bull; <a href="#DrawSetStrokeColor">DrawSetStrokeColor</a> &bull; <a href="#DrawSetStrokePatternURL">DrawSetStrokePatternURL</a> &bull; <a href="#DrawSetStrokeAntialias">DrawSetStrokeAntialias</a> &bull; <a href="#DrawSetStrokeDashArray">DrawSetStrokeDashArray</a> &bull; <a href="#DrawSetStrokeDashOffset">DrawSetStrokeDashOffset</a> &bull; <a href="#DrawSetStrokeLineCap">DrawSetStrokeLineCap</a> &bull; <a href="#DrawSetStrokeLineJoin">DrawSetStrokeLineJoin</a> &bull; <a href="#DrawSetStrokeMiterLimit">DrawSetStrokeMiterLimit</a> &bull; <a href="#DrawSetStrokeOpacity">DrawSetStrokeOpacity</a> &bull; <a href="#DrawSetStrokeWidth">DrawSetStrokeWidth</a> &bull; <a href="#DrawSetTextAlignment">DrawSetTextAlignment</a> &bull; <a href="#DrawSetTextAntialias">DrawSetTextAntialias</a> &bull; <a href="#DrawSetTextDecoration">DrawSetTextDecoration</a> &bull; <a href="#DrawSetTextEncoding">DrawSetTextEncoding</a> &bull; <a href="#DrawSetTextKerning">DrawSetTextKerning</a> &bull; <a href="#DrawSetTextInterwordSpacing">DrawSetTextInterwordSpacing</a> &bull; <a href="#DrawSetTextInterwordSpacing">DrawSetTextInterwordSpacing</a> &bull; <a href="#DrawSetTextUnderColor">DrawSetTextUnderColor</a> &bull; <a href="#DrawSetVectorGraphics">DrawSetVectorGraphics</a> &bull; <a href="#DrawSkewX">DrawSkewX</a> &bull; <a href="#DrawSkewY">DrawSkewY</a> &bull; <a href="#DrawTranslate">DrawTranslate</a> &bull; <a href="#DrawSetViewbox">DrawSetViewbox</a> &bull; <a href="#IsDrawingWand">IsDrawingWand</a> &bull; <a href="#NewDrawingWand">NewDrawingWand</a> &bull; <a href="#PeekDrawingWand">PeekDrawingWand</a> &bull; <a href="#PopDrawingWand">PopDrawingWand</a> &bull; <a href="#PushDrawingWand">PushDrawingWand</a>]</p>

<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="ClearDrawingWand">ClearDrawingWand</a></h2>
<div class="doc-section">

<p>ClearDrawingWand() clear resources associated with the drawing wand.</p></ol>

<p>The format of the ClearDrawingWand method is:</p>

<pre class="code">
  DrawingWand *ClearDrawingWand(DrawingWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand. to destroy</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="CloneDrawingWand">CloneDrawingWand</a></h2>
<div class="doc-section">

<p>CloneDrawingWand() makes an exact copy of the specified wand.</p></ol>

<p>The format of the CloneDrawingWand method is:</p>

<pre class="code">
  DrawingWand *CloneDrawingWand(const DrawingWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the magick wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DestroyDrawingWand">DestroyDrawingWand</a></h2>
<div class="doc-section">

<p>DestroyDrawingWand() frees all resources associated with the drawing wand. Once the drawing wand has been freed, it should not be used and further unless it re-allocated.</p></ol>

<p>The format of the DestroyDrawingWand method is:</p>

<pre class="code">
  DrawingWand *DestroyDrawingWand(DrawingWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand. to destroy</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawAffine">DrawAffine</a></h2>
<div class="doc-section">

<p>DrawAffine() adjusts the current affine transformation matrix with the specified affine transformation matrix. Note that the current affine transform is adjusted rather than replaced.</p></ol>

<p>The format of the DrawAffine method is:</p>

<pre class="code">
  void DrawAffine(DrawingWand *wand,const AffineMatrix *affine)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>Drawing wand</p></ol>

<h5>affine</h5>
<ol><p>Affine matrix parameters</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawAnnotation">DrawAnnotation</a></h2>
<div class="doc-section">

<p>DrawAnnotation() draws text on the image.</p></ol>

<p>The format of the DrawAnnotation method is:</p>

<pre class="code">
  void DrawAnnotation(DrawingWand *wand,const double x,
    const double y,const unsigned char *text)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>x</h5>
<ol><p>x ordinate to left of text</p></ol>

<h5>y</h5>
<ol><p>y ordinate to text baseline</p></ol>

<h5>text</h5>
<ol><p>text to draw</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawArc">DrawArc</a></h2>
<div class="doc-section">

<p>DrawArc() draws an arc falling within a specified bounding rectangle on the image.</p></ol>

<p>The format of the DrawArc method is:</p>

<pre class="code">
  void DrawArc(DrawingWand *wand,const double sx,const double sy,
    const double ex,const double ey,const double sd,const double ed)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>sx</h5>
<ol><p>starting x ordinate of bounding rectangle</p></ol>

<h5>sy</h5>
<ol><p>starting y ordinate of bounding rectangle</p></ol>

<h5>ex</h5>
<ol><p>ending x ordinate of bounding rectangle</p></ol>

<h5>ey</h5>
<ol><p>ending y ordinate of bounding rectangle</p></ol>

<h5>sd</h5>
<ol><p>starting degrees of rotation</p></ol>

<h5>ed</h5>
<ol><p>ending degrees of rotation</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawBezier">DrawBezier</a></h2>
<div class="doc-section">

<p>DrawBezier() draws a bezier curve through a set of points on the image.</p></ol>

<p>The format of the DrawBezier method is:</p>

<pre class="code">
  void DrawBezier(DrawingWand *wand,
    const unsigned long number_coordinates,const PointInfo *coordinates)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>number_coordinates</h5>
<ol><p>number of coordinates</p></ol>

<h5>coordinates</h5>
<ol><p>coordinates</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawCircle">DrawCircle</a></h2>
<div class="doc-section">

<p>DrawCircle() draws a circle on the image.</p></ol>

<p>The format of the DrawCircle method is:</p>

<pre class="code">
  void DrawCircle(DrawingWand *wand,const double ox,
    const double oy,const double px, const double py)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>ox</h5>
<ol><p>origin x ordinate</p></ol>

<h5>oy</h5>
<ol><p>origin y ordinate</p></ol>

<h5>px</h5>
<ol><p>perimeter x ordinate</p></ol>

<h5>py</h5>
<ol><p>perimeter y ordinate</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawClearException">DrawClearException</a></h2>
<div class="doc-section">

<p>DrawClearException() clear any exceptions associated with the wand.</p></ol>

<p>The format of the DrawClearException method is:</p>

<pre class="code">
  MagickBooleanType DrawClearException(DrawWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawComposite">DrawComposite</a></h2>
<div class="doc-section">

<p>DrawComposite() composites an image onto the current image, using the specified composition operator, specified position, and at the specified size.</p></ol>

<p>The format of the DrawComposite method is:</p>

<pre class="code">
  MagickBooleanType DrawComposite(DrawingWand *wand,
    const CompositeOperator compose,const double x,
    const double y,const double width,const double height,
    MagickWand *magick_wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>compose</h5>
<ol><p>composition operator</p></ol>

<h5>x</h5>
<ol><p>x ordinate of top left corner</p></ol>

<h5>y</h5>
<ol><p>y ordinate of top left corner</p></ol>

<h5>width</h5>
<ol><p>Width to resize image to prior to compositing.  Specify zero to use existing width.</p></ol>

<h5>height</h5>
<ol><p>Height to resize image to prior to compositing.  Specify zero to use existing height.</p></ol>

<h5>magick_wand</h5>
<ol><p>Image to composite is obtained from this wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawColor">DrawColor</a></h2>
<div class="doc-section">

<p>DrawColor() draws color on image using the current fill color, starting at specified position, and using specified paint method. The available paint methods are:</p>

<pre class="text">
      PointMethod: Recolors the target pixel
      ReplaceMethod: Recolor any pixel that matches the target pixel.
      FloodfillMethod: Recolors target pixels and matching neighbors.
      ResetMethod: Recolor all pixels.
</pre>

<p>The format of the DrawColor method is:</p>

<pre class="code">
  void DrawColor(DrawingWand *wand,const double x,const double y,
    const PaintMethod paint_method)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>x</h5>
<ol><p>x ordinate.</p></ol>

<h5>y</h5>
<ol><p>y ordinate.</p></ol>

<h5>paint_method</h5>
<ol><p>paint method.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawComment">DrawComment</a></h2>
<div class="doc-section">

<p>DrawComment() adds a comment to a vector output stream.</p></ol>

<p>The format of the DrawComment method is:</p>

<pre class="code">
  void DrawComment(DrawingWand *wand,const char *comment)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>comment</h5>
<ol><p>comment text</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawEllipse">DrawEllipse</a></h2>
<div class="doc-section">

<p>DrawEllipse() draws an ellipse on the image.</p></ol>

<p>The format of the DrawEllipse method is:</p>

<pre class="code">
   void DrawEllipse(DrawingWand *wand,const double ox,const double oy,
     const double rx,const double ry,const double start,const double end)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>ox</h5>
<ol><p>origin x ordinate</p></ol>

<h5>oy</h5>
<ol><p>origin y ordinate</p></ol>

<h5>rx</h5>
<ol><p>radius in x</p></ol>

<h5>ry</h5>
<ol><p>radius in y</p></ol>

<h5>start</h5>
<ol><p>starting rotation in degrees</p></ol>

<h5>end</h5>
<ol><p>ending rotation in degrees</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawGetBorderColor">DrawGetBorderColor</a></h2>
<div class="doc-section">

<p>DrawGetBorderColor() returns the border color used for drawing bordered objects.</p></ol>

<p>The format of the DrawGetBorderColor method is:</p>

<pre class="code">
  void DrawGetBorderColor(const DrawingWand *wand,
    PixelWand *border_color)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>border_color</h5>
<ol><p>Return the border color.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawGetClipPath">DrawGetClipPath</a></h2>
<div class="doc-section">

<p>DrawGetClipPath() obtains the current clipping path ID. The value returned must be deallocated by the user when it is no longer needed.</p></ol>

<p>The format of the DrawGetClipPath method is:</p>

<pre class="code">
  char *DrawGetClipPath(const DrawingWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawGetClipRule">DrawGetClipRule</a></h2>
<div class="doc-section">

<p>DrawGetClipRule() returns the current polygon fill rule to be used by the clipping path.</p></ol>

<p>The format of the DrawGetClipRule method is:</p>

<pre class="code">
       FillRule DrawGetClipRule(const DrawingWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawGetClipUnits">DrawGetClipUnits</a></h2>
<div class="doc-section">

<p>DrawGetClipUnits() returns the interpretation of clip path units.</p></ol>

<p>The format of the DrawGetClipUnits method is:</p>

<pre class="code">
  ClipPathUnits DrawGetClipUnits(const DrawingWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawGetException">DrawGetException</a></h2>
<div class="doc-section">

<p>DrawGetException() returns the severity, reason, and description of any error that occurs when using other methods in this API.</p></ol>

<p>The format of the DrawGetException method is:</p>

<pre class="code">
  char *DrawGetException(const DrawWand *wand,
    ExceptionType *severity)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>severity</h5>
<ol><p>the severity of the error is returned here.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawGetExceptionType">DrawGetExceptionType</a></h2>
<div class="doc-section">

<p>DrawGetExceptionType() the exception type associated with the wand.  If no exception has occurred, UndefinedExceptionType is returned.</p></ol>

<p>The format of the DrawGetExceptionType method is:</p>

<pre class="code">
  ExceptionType DrawGetExceptionType(const DrawWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the magick wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawGetFillColor">DrawGetFillColor</a></h2>
<div class="doc-section">

<p>DrawGetFillColor() returns the fill color used for drawing filled objects.</p></ol>

<p>The format of the DrawGetFillColor method is:</p>

<pre class="code">
  void DrawGetFillColor(const DrawingWand *wand,
    PixelWand *fill_color)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>fill_color</h5>
<ol><p>Return the fill color.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawGetFillOpacity">DrawGetFillOpacity</a></h2>
<div class="doc-section">

<p>DrawGetFillOpacity() returns the opacity used when drawing using the fill color or fill texture.  Fully opaque is 1.0.</p></ol>

<p>The format of the DrawGetFillOpacity method is:</p>

<pre class="code">
  double DrawGetFillOpacity(const DrawingWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawGetFillRule">DrawGetFillRule</a></h2>
<div class="doc-section">

<p>DrawGetFillRule() returns the fill rule used while drawing polygons.</p></ol>

<p>The format of the DrawGetFillRule method is:</p>

<pre class="code">
  FillRule DrawGetFillRule(const DrawingWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawGetFont">DrawGetFont</a></h2>
<div class="doc-section">

<p>DrawGetFont() returns a null-terminaged string specifying the font used when annotating with text. The value returned must be freed by the user when no longer needed.</p></ol>

<p>The format of the DrawGetFont method is:</p>

<pre class="code">
  char *DrawGetFont(const DrawingWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawGetFontFamily">DrawGetFontFamily</a></h2>
<div class="doc-section">

<p>DrawGetFontFamily() returns the font family to use when annotating with text. The value returned must be freed by the user when it is no longer needed.</p></ol>

<p>The format of the DrawGetFontFamily method is:</p>

<pre class="code">
  char *DrawGetFontFamily(const DrawingWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawGetFontSize">DrawGetFontSize</a></h2>
<div class="doc-section">

<p>DrawGetFontSize() returns the font pointsize used when annotating with text.</p></ol>

<p>The format of the DrawGetFontSize method is:</p>

<pre class="code">
  double DrawGetFontSize(const DrawingWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawGetFontStretch">DrawGetFontStretch</a></h2>
<div class="doc-section">

<p>DrawGetFontStretch() returns the font stretch used when annotating with text.</p></ol>

<p>The format of the DrawGetFontStretch method is:</p>

<pre class="code">
  StretchType DrawGetFontStretch(const DrawingWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawGetFontStyle">DrawGetFontStyle</a></h2>
<div class="doc-section">

<p>DrawGetFontStyle() returns the font style used when annotating with text.</p></ol>

<p>The format of the DrawGetFontStyle method is:</p>

<pre class="code">
  StyleType DrawGetFontStyle(const DrawingWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawGetFontWeight">DrawGetFontWeight</a></h2>
<div class="doc-section">

<p>DrawGetFontWeight() returns the font weight used when annotating with text.</p></ol>

<p>The format of the DrawGetFontWeight method is:</p>

<pre class="code">
  unsigned long DrawGetFontWeight(const DrawingWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawGetGravity">DrawGetGravity</a></h2>
<div class="doc-section">

<p>DrawGetGravity() returns the text placement gravity used when annotating with text.</p></ol>

<p>The format of the DrawGetGravity method is:</p>

<pre class="code">
  GravityType DrawGetGravity(const DrawingWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawGetOpacity">DrawGetOpacity</a></h2>
<div class="doc-section">

<p>DrawGetOpacity() returns the opacity used when drawing with the fill or stroke color or texture.  Fully opaque is 1.0.</p></ol>

<p>The format of the DrawGetOpacity method is:</p>

<pre class="code">
  double DrawGetOpacity(const DrawingWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawGetStrokeAntialias">DrawGetStrokeAntialias</a></h2>
<div class="doc-section">

<p>DrawGetStrokeAntialias() returns the current stroke antialias setting. Stroked outlines are antialiased by default.  When antialiasing is disabled stroked pixels are thresholded to determine if the stroke color or underlying canvas color should be used.</p></ol>

<p>The format of the DrawGetStrokeAntialias method is:</p>

<pre class="code">
  MagickBooleanType DrawGetStrokeAntialias(const DrawingWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawGetStrokeColor">DrawGetStrokeColor</a></h2>
<div class="doc-section">

<p>DrawGetStrokeColor() returns the color used for stroking object outlines.</p></ol>

<p>The format of the DrawGetStrokeColor method is:</p>

<pre class="code">
  void DrawGetStrokeColor(const DrawingWand *wand,
  $  PixelWand *stroke_color)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>stroke_color</h5>
<ol><p>Return the stroke color.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawGetStrokeDashArray">DrawGetStrokeDashArray</a></h2>
<div class="doc-section">

<p>DrawGetStrokeDashArray() returns an array representing the pattern of dashes and gaps used to stroke paths (see DrawSetStrokeDashArray). The array must be freed once it is no longer required by the user.</p></ol>

<p>The format of the DrawGetStrokeDashArray method is:</p>

<pre class="code">
  double *DrawGetStrokeDashArray(const DrawingWand *wand,
    unsigned long *number_elements)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>number_elements</h5>
<ol><p>address to place number of elements in dash array</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawGetStrokeDashOffset">DrawGetStrokeDashOffset</a></h2>
<div class="doc-section">

<p>DrawGetStrokeDashOffset() returns the offset into the dash pattern to start the dash.</p></ol>

<p>The format of the DrawGetStrokeDashOffset method is:</p>

<pre class="code">
  double DrawGetStrokeDashOffset(const DrawingWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawGetStrokeLineCap">DrawGetStrokeLineCap</a></h2>
<div class="doc-section">

<p>DrawGetStrokeLineCap() returns the shape to be used at the end of open subpaths when they are stroked. Values of LineCap are UndefinedCap, ButtCap, RoundCap, and SquareCap.</p></ol>

<p>The format of the DrawGetStrokeLineCap method is:</p>

<pre class="code">
  LineCap DrawGetStrokeLineCap(const DrawingWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawGetStrokeLineJoin">DrawGetStrokeLineJoin</a></h2>
<div class="doc-section">

<p>DrawGetStrokeLineJoin() returns the shape to be used at the corners of paths (or other vector shapes) when they are stroked. Values of LineJoin are UndefinedJoin, MiterJoin, RoundJoin, and BevelJoin.</p></ol>

<p>The format of the DrawGetStrokeLineJoin method is:</p>

<pre class="code">
  LineJoin DrawGetStrokeLineJoin(const DrawingWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawGetStrokeMiterLimit">DrawGetStrokeMiterLimit</a></h2>
<div class="doc-section">

<p>DrawGetStrokeMiterLimit() returns the miter limit. When two line segments meet at a sharp angle and miter joins have been specified for 'lineJoin', it is possible for the miter to extend far beyond the thickness of the line stroking the path. The miterLimit' imposes a limit on the ratio of the miter length to the 'lineWidth'.</p></ol>

<p>The format of the DrawGetStrokeMiterLimit method is:</p>

<pre class="code">
  unsigned long DrawGetStrokeMiterLimit(const DrawingWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawGetStrokeOpacity">DrawGetStrokeOpacity</a></h2>
<div class="doc-section">

<p>DrawGetStrokeOpacity() returns the opacity of stroked object outlines.</p></ol>

<p>The format of the DrawGetStrokeOpacity method is:</p>

<pre class="code">
  double DrawGetStrokeOpacity(const DrawingWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawGetStrokeWidth">DrawGetStrokeWidth</a></h2>
<div class="doc-section">

<p>DrawGetStrokeWidth() returns the width of the stroke used to draw object outlines.</p></ol>

<p>The format of the DrawGetStrokeWidth method is:</p>

<pre class="code">
  double DrawGetStrokeWidth(const DrawingWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawGetTextAlignment">DrawGetTextAlignment</a></h2>
<div class="doc-section">

<p>DrawGetTextAlignment() returns the alignment applied when annotating with text.</p></ol>

<p>The format of the DrawGetTextAlignment method is:</p>

<pre class="code">
  AlignType DrawGetTextAlignment(DrawingWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawGetTextAntialias">DrawGetTextAntialias</a></h2>
<div class="doc-section">

<p>DrawGetTextAntialias() returns the current text antialias setting, which determines whether text is antialiased.  Text is antialiased by default.</p></ol>

<p>The format of the DrawGetTextAntialias method is:</p>

<pre class="code">
  MagickBooleanType DrawGetTextAntialias(const DrawingWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawGetTextDecoration">DrawGetTextDecoration</a></h2>
<div class="doc-section">

<p>DrawGetTextDecoration() returns the decoration applied when annotating with text.</p></ol>

<p>The format of the DrawGetTextDecoration method is:</p>

<pre class="code">
  DecorationType DrawGetTextDecoration(DrawingWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawGetTextEncoding">DrawGetTextEncoding</a></h2>
<div class="doc-section">

<p>DrawGetTextEncoding() returns a null-terminated string which specifies the code set used for text annotations. The string must be freed by the user once it is no longer required.</p></ol>

<p>The format of the DrawGetTextEncoding method is:</p>

<pre class="code">
  char *DrawGetTextEncoding(const DrawingWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawGetTextKerning">DrawGetTextKerning</a></h2>
<div class="doc-section">

<p>DrawGetTextKerning() gets the spacing between characters in text.</p></ol>

<p>The format of the DrawSetFontKerning method is:</p>

<pre class="code">
  double DrawGetTextKerning(DrawingWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawGetTextInterwordSpacing">DrawGetTextInterwordSpacing</a></h2>
<div class="doc-section">

<p>DrawGetTextInterwordSpacing() gets the spacing between lines in text.</p></ol>

<p>The format of the DrawSetFontKerning method is:</p>

<pre class="code">
  double DrawGetTextInterwordSpacing(DrawingWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawGetTextInterwordSpacing">DrawGetTextInterwordSpacing</a></h2>
<div class="doc-section">

<p>DrawGetTextInterwordSpacing() gets the spacing between words in text.</p></ol>

<p>The format of the DrawSetFontKerning method is:</p>

<pre class="code">
  double DrawGetTextInterwordSpacing(DrawingWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawGetVectorGraphics">DrawGetVectorGraphics</a></h2>
<div class="doc-section">

<p>DrawGetVectorGraphics() returns a null-terminated string which specifies the vector graphics generated by any graphics calls made since the wand was instantiated.  The string must be freed by the user once it is no longer required.</p></ol>

<p>The format of the DrawGetVectorGraphics method is:</p>

<pre class="code">
  char *DrawGetVectorGraphics(const DrawingWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawGetTextUnderColor">DrawGetTextUnderColor</a></h2>
<div class="doc-section">

<p>DrawGetTextUnderColor() returns the color of a background rectangle to place under text annotations.</p></ol>

<p>The format of the DrawGetTextUnderColor method is:</p>

<pre class="code">
  void DrawGetTextUnderColor(const DrawingWand *wand,
    PixelWand *under_color)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>under_color</h5>
<ol><p>Return the under color.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawLine">DrawLine</a></h2>
<div class="doc-section">

<p>DrawLine() draws a line on the image using the current stroke color, stroke opacity, and stroke width.</p></ol>

<p>The format of the DrawLine method is:</p>

<pre class="code">
  void DrawLine(DrawingWand *wand,const double sx,const double sy,
    const double ex,const double ey)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>sx</h5>
<ol><p>starting x ordinate</p></ol>

<h5>sy</h5>
<ol><p>starting y ordinate</p></ol>

<h5>ex</h5>
<ol><p>ending x ordinate</p></ol>

<h5>ey</h5>
<ol><p>ending y ordinate</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawMatte">DrawMatte</a></h2>
<div class="doc-section">

<p>DrawMatte() paints on the image's opacity channel in order to set effected pixels to transparent. to influence the opacity of pixels. The available paint methods are:</p>

<pre class="text">
      PointMethod: Select the target pixel
      ReplaceMethod: Select any pixel that matches the target pixel.
      FloodfillMethod: Select the target pixel and matching neighbors.
      FillToBorderMethod: Select the target pixel and neighbors not matching
  border color.
      ResetMethod: Select all pixels.
</pre>

<p>The format of the DrawMatte method is:</p>

<pre class="code">
  void DrawMatte(DrawingWand *wand,const double x,const double y,
    const PaintMethod paint_method)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>x</h5>
<ol><p>x ordinate</p></ol>

<h5>y</h5>
<ol><p>y ordinate</p></ol>

<h5>paint_method</h5>
<ol><p>paint method.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawPathClose">DrawPathClose</a></h2>
<div class="doc-section">

<p>DrawPathClose() adds a path element to the current path which closes the current subpath by drawing a straight line from the current point to the current subpath's most recent starting point (usually, the most recent moveto point).</p></ol>

<p>The format of the DrawPathClose method is:</p>

<pre class="code">
  void DrawPathClose(DrawingWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawPathCurveToAbsolute">DrawPathCurveToAbsolute</a></h2>
<div class="doc-section">

<p>DrawPathCurveToAbsolute() draws a cubic Bezier curve from the current point to (x,y) using (x1,y1) as the control point at the beginning of the curve and (x2,y2) as the control point at the end of the curve using absolute coordinates. At the end of the command, the new current point becomes the final (x,y) coordinate pair used in the polybezier.</p></ol>

<p>The format of the DrawPathCurveToAbsolute method is:</p>

<pre class="code">
  void DrawPathCurveToAbsolute(DrawingWand *wand,const double x1,
    const double y1,const double x2,const double y2,const double x,
    const double y)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>x1</h5>
<ol><p>x ordinate of control point for curve beginning</p></ol>

<h5>y1</h5>
<ol><p>y ordinate of control point for curve beginning</p></ol>

<h5>x2</h5>
<ol><p>x ordinate of control point for curve ending</p></ol>

<h5>y2</h5>
<ol><p>y ordinate of control point for curve ending</p></ol>

<h5>x</h5>
<ol><p>x ordinate of the end of the curve</p></ol>

<h5>y</h5>
<ol><p>y ordinate of the end of the curve</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawPathCurveToRelative">DrawPathCurveToRelative</a></h2>
<div class="doc-section">

<p>DrawPathCurveToRelative() draws a cubic Bezier curve from the current point to (x,y) using (x1,y1) as the control point at the beginning of the curve and (x2,y2) as the control point at the end of the curve using relative coordinates. At the end of the command, the new current point becomes the final (x,y) coordinate pair used in the polybezier.</p></ol>

<p>The format of the DrawPathCurveToRelative method is:</p>

<pre class="code">
  void DrawPathCurveToRelative(DrawingWand *wand,const double x1,
    const double y1,const double x2,const double y2,const double x,
    const double y)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>x1</h5>
<ol><p>x ordinate of control point for curve beginning</p></ol>

<h5>y1</h5>
<ol><p>y ordinate of control point for curve beginning</p></ol>

<h5>x2</h5>
<ol><p>x ordinate of control point for curve ending</p></ol>

<h5>y2</h5>
<ol><p>y ordinate of control point for curve ending</p></ol>

<h5>x</h5>
<ol><p>x ordinate of the end of the curve</p></ol>

<h5>y</h5>
<ol><p>y ordinate of the end of the curve</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawPathCurveToQuadraticBezierAbsolute">DrawPathCurveToQuadraticBezierAbsolute</a></h2>
<div class="doc-section">

<p>DrawPathCurveToQuadraticBezierAbsolute() draws a quadratic Bezier curve from the current point to (x,y) using (x1,y1) as the control point using absolute coordinates. At the end of the command, the new current point becomes the final (x,y) coordinate pair used in the polybezier.</p></ol>

<p>The format of the DrawPathCurveToQuadraticBezierAbsolute method is:</p>

<pre class="code">
  void DrawPathCurveToQuadraticBezierAbsolute(DrawingWand *wand,
    const double x1,const double y1,onst double x,const double y)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>x1</h5>
<ol><p>x ordinate of the control point</p></ol>

<h5>y1</h5>
<ol><p>y ordinate of the control point</p></ol>

<h5>x</h5>
<ol><p>x ordinate of final point</p></ol>

<h5>y</h5>
<ol><p>y ordinate of final point</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawPathCurveToQuadraticBezierRelative">DrawPathCurveToQuadraticBezierRelative</a></h2>
<div class="doc-section">

<p>DrawPathCurveToQuadraticBezierRelative() draws a quadratic Bezier curve from the current point to (x,y) using (x1,y1) as the control point using relative coordinates. At the end of the command, the new current point becomes the final (x,y) coordinate pair used in the polybezier.</p></ol>

<p>The format of the DrawPathCurveToQuadraticBezierRelative method is:</p>

<pre class="code">
  void DrawPathCurveToQuadraticBezierRelative(DrawingWand *wand,
    const double x1,const double y1,const double x,const double y)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>x1</h5>
<ol><p>x ordinate of the control point</p></ol>

<h5>y1</h5>
<ol><p>y ordinate of the control point</p></ol>

<h5>x</h5>
<ol><p>x ordinate of final point</p></ol>

<h5>y</h5>
<ol><p>y ordinate of final point</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawPathCurveToQuadraticBezierSmoothAbsolute">DrawPathCurveToQuadraticBezierSmoothAbsolute</a></h2>
<div class="doc-section">

<p>DrawPathCurveToQuadraticBezierSmoothAbsolute() draws a quadratic Bezier curve (using absolute coordinates) from the current point to (x,y). The control point is assumed to be the reflection of the control point on the previous command relative to the current point. (If there is no previous command or if the previous command was not a DrawPathCurveToQuadraticBezierAbsolute, DrawPathCurveToQuadraticBezierRelative, DrawPathCurveToQuadraticBezierSmoothAbsolute or DrawPathCurveToQuadraticBezierSmoothRelative, assume the control point is coincident with the current point.). At the end of the command, the new current point becomes the final (x,y) coordinate pair used in the polybezier.</p></ol>

<p>The format of the DrawPathCurveToQuadraticBezierSmoothAbsolute method is:</p>

<pre class="code">
  void DrawPathCurveToQuadraticBezierSmoothAbsolute(
    DrawingWand *wand,const double x,const double y)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>x</h5>
<ol><p>x ordinate of final point</p></ol>

<h5>y</h5>
<ol><p>y ordinate of final point</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawPathCurveToQuadraticBezierSmoothAbsolute">DrawPathCurveToQuadraticBezierSmoothAbsolute</a></h2>
<div class="doc-section">

<p>DrawPathCurveToQuadraticBezierSmoothAbsolute() draws a quadratic Bezier curve (using relative coordinates) from the current point to (x,y). The control point is assumed to be the reflection of the control point on the previous command relative to the current point. (If there is no previous command or if the previous command was not a DrawPathCurveToQuadraticBezierAbsolute, DrawPathCurveToQuadraticBezierRelative, DrawPathCurveToQuadraticBezierSmoothAbsolute or DrawPathCurveToQuadraticBezierSmoothRelative, assume the control point is coincident with the current point.). At the end of the command, the new current point becomes the final (x,y) coordinate pair used in the polybezier.</p></ol>

<p>The format of the DrawPathCurveToQuadraticBezierSmoothRelative method is:</p>

<pre class="code">
  void DrawPathCurveToQuadraticBezierSmoothRelative(DrawingWand *wand,
    const double x,const double y)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>x</h5>
<ol><p>x ordinate of final point</p></ol>

<h5>y</h5>
<ol><p>y ordinate of final point</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawPathCurveToSmoothAbsolute">DrawPathCurveToSmoothAbsolute</a></h2>
<div class="doc-section">

<p>DrawPathCurveToSmoothAbsolute() draws a cubic Bezier curve from the current point to (x,y) using absolute coordinates. The first control point is assumed to be the reflection of the second control point on the previous command relative to the current point. (If there is no previous command or if the previous command was not an DrawPathCurveToAbsolute, DrawPathCurveToRelative, DrawPathCurveToSmoothAbsolute or DrawPathCurveToSmoothRelative, assume the first control point is coincident with the current point.) (x2,y2) is the second control point (i.e., the control point at the end of the curve). At the end of the command, the new current point becomes the final (x,y) coordinate pair used in the polybezier.</p></ol>

<p>The format of the DrawPathCurveToSmoothAbsolute method is:</p>

<pre class="code">
  void DrawPathCurveToSmoothAbsolute(DrawingWand *wand,
    const double x2const double y2,const double x,const double y)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>x2</h5>
<ol><p>x ordinate of second control point</p></ol>

<h5>y2</h5>
<ol><p>y ordinate of second control point</p></ol>

<h5>x</h5>
<ol><p>x ordinate of termination point</p></ol>

<h5>y</h5>
<ol><p>y ordinate of termination point</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawPathCurveToSmoothRelative">DrawPathCurveToSmoothRelative</a></h2>
<div class="doc-section">

<p>DrawPathCurveToSmoothRelative() draws a cubic Bezier curve from the current point to (x,y) using relative coordinates. The first control point is assumed to be the reflection of the second control point on the previous command relative to the current point. (If there is no previous command or if the previous command was not an DrawPathCurveToAbsolute, DrawPathCurveToRelative, DrawPathCurveToSmoothAbsolute or DrawPathCurveToSmoothRelative, assume the first control point is coincident with the current point.) (x2,y2) is the second control point (i.e., the control point at the end of the curve). At the end of the command, the new current point becomes the final (x,y) coordinate pair used in the polybezier.</p></ol>

<p>The format of the DrawPathCurveToSmoothRelative method is:</p>

<pre class="code">
  void DrawPathCurveToSmoothRelative(DrawingWand *wand,
    const double x2,const double y2,const double x,const double y)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>x2</h5>
<ol><p>x ordinate of second control point</p></ol>

<h5>y2</h5>
<ol><p>y ordinate of second control point</p></ol>

<h5>x</h5>
<ol><p>x ordinate of termination point</p></ol>

<h5>y</h5>
<ol><p>y ordinate of termination point</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawPathEllipticArcAbsolute">DrawPathEllipticArcAbsolute</a></h2>
<div class="doc-section">

<p>DrawPathEllipticArcAbsolute() draws an elliptical arc from the current point to (x, y) using absolute coordinates. The size and orientation of the ellipse are defined by two radii (rx, ry) and an xAxisRotation, which indicates how the ellipse as a whole is rotated relative to the current coordinate system. The center (cx, cy) of the ellipse is calculated automagically to satisfy the constraints imposed by the other parameters. largeArcFlag and sweepFlag contribute to the automatic calculations and help determine how the arc is drawn. If largeArcFlag is true then draw the larger of the available arcs. If sweepFlag is true, then draw the arc matching a clock-wise rotation.</p></ol>

<p>The format of the DrawPathEllipticArcAbsolute method is:</p>

<pre class="code">
  void DrawPathEllipticArcAbsolute(DrawingWand *wand,
    const double rx,const double ry,const double x_axis_rotation,
    const MagickBooleanType large_arc_flag,
    const MagickBooleanType sweep_flag,const double x,const double y)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>rx</h5>
<ol><p>x radius</p></ol>

<h5>ry</h5>
<ol><p>y radius</p></ol>

<h5>x_axis_rotation</h5>
<ol><p>indicates how the ellipse as a whole is rotated relative to the current coordinate system</p></ol>

<h5>large_arc_flag</h5>
<ol><p>If non-zero (true) then draw the larger of the available arcs</p></ol>

<h5>sweep_flag</h5>
<ol><p>If non-zero (true) then draw the arc matching a clock-wise rotation</p></ol>


 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawPathEllipticArcRelative">DrawPathEllipticArcRelative</a></h2>
<div class="doc-section">

<p>DrawPathEllipticArcRelative() draws an elliptical arc from the current point to (x, y) using relative coordinates. The size and orientation of the ellipse are defined by two radii (rx, ry) and an xAxisRotation, which indicates how the ellipse as a whole is rotated relative to the current coordinate system. The center (cx, cy) of the ellipse is calculated automagically to satisfy the constraints imposed by the other parameters. largeArcFlag and sweepFlag contribute to the automatic calculations and help determine how the arc is drawn. If largeArcFlag is true then draw the larger of the available arcs. If sweepFlag is true, then draw the arc matching a clock-wise rotation.</p></ol>

<p>The format of the DrawPathEllipticArcRelative method is:</p>

<pre class="code">
  void DrawPathEllipticArcRelative(DrawingWand *wand,
    const double rx,const double ry,const double x_axis_rotation,
    const MagickBooleanType large_arc_flag,
    const MagickBooleanType sweep_flag,const double x,const double y)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>rx</h5>
<ol><p>x radius</p></ol>

<h5>ry</h5>
<ol><p>y radius</p></ol>

<h5>x_axis_rotation</h5>
<ol><p>indicates how the ellipse as a whole is rotated relative to the current coordinate system</p></ol>

<h5>large_arc_flag</h5>
<ol><p>If non-zero (true) then draw the larger of the available arcs</p></ol>

<h5>sweep_flag</h5>
<ol><p>If non-zero (true) then draw the arc matching a clock-wise rotation</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawPathFinish">DrawPathFinish</a></h2>
<div class="doc-section">

<p>DrawPathFinish() terminates the current path.</p></ol>

<p>The format of the DrawPathFinish method is:</p>

<pre class="code">
  void DrawPathFinish(DrawingWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawPathLineToAbsolute">DrawPathLineToAbsolute</a></h2>
<div class="doc-section">

<p>DrawPathLineToAbsolute() draws a line path from the current point to the given coordinate using absolute coordinates. The coordinate then becomes the new current point.</p></ol>

<p>The format of the DrawPathLineToAbsolute method is:</p>

<pre class="code">
  void DrawPathLineToAbsolute(DrawingWand *wand,const double x,
    const double y)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>x</h5>
<ol><p>target x ordinate</p></ol>

<h5>y</h5>
<ol><p>target y ordinate</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawPathLineToRelative">DrawPathLineToRelative</a></h2>
<div class="doc-section">

<p>DrawPathLineToRelative() draws a line path from the current point to the given coordinate using relative coordinates. The coordinate then becomes the new current point.</p></ol>

<p>The format of the DrawPathLineToRelative method is:</p>

<pre class="code">
  void DrawPathLineToRelative(DrawingWand *wand,const double x,
    const double y)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>x</h5>
<ol><p>target x ordinate</p></ol>

<h5>y</h5>
<ol><p>target y ordinate</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawPathLineToHorizontalAbsolute">DrawPathLineToHorizontalAbsolute</a></h2>
<div class="doc-section">

<p>DrawPathLineToHorizontalAbsolute() draws a horizontal line path from the current point to the target point using absolute coordinates.  The target point then becomes the new current point.</p></ol>

<p>The format of the DrawPathLineToHorizontalAbsolute method is:</p>

<pre class="code">
  void DrawPathLineToHorizontalAbsolute(DrawingWand *wand,
    const PathMode mode,const double x)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>x</h5>
<ol><p>target x ordinate</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawPathLineToHorizontalRelative">DrawPathLineToHorizontalRelative</a></h2>
<div class="doc-section">

<p>DrawPathLineToHorizontalRelative() draws a horizontal line path from the current point to the target point using relative coordinates.  The target point then becomes the new current point.</p></ol>

<p>The format of the DrawPathLineToHorizontalRelative method is:</p>

<pre class="code">
  void DrawPathLineToHorizontalRelative(DrawingWand *wand,
    const double x)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>x</h5>
<ol><p>target x ordinate</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawPathLineToVerticalAbsolute">DrawPathLineToVerticalAbsolute</a></h2>
<div class="doc-section">

<p>DrawPathLineToVerticalAbsolute() draws a vertical line path from the current point to the target point using absolute coordinates.  The target point then becomes the new current point.</p></ol>

<p>The format of the DrawPathLineToVerticalAbsolute method is:</p>

<pre class="code">
  void DrawPathLineToVerticalAbsolute(DrawingWand *wand,
    const double y)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>y</h5>
<ol><p>target y ordinate</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawPathLineToVerticalRelative">DrawPathLineToVerticalRelative</a></h2>
<div class="doc-section">

<p>DrawPathLineToVerticalRelative() draws a vertical line path from the current point to the target point using relative coordinates.  The target point then becomes the new current point.</p></ol>

<p>The format of the DrawPathLineToVerticalRelative method is:</p>

<pre class="code">
  void DrawPathLineToVerticalRelative(DrawingWand *wand,
    const double y)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>y</h5>
<ol><p>target y ordinate</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawPathMoveToAbsolute">DrawPathMoveToAbsolute</a></h2>
<div class="doc-section">

<p>DrawPathMoveToAbsolute() starts a new sub-path at the given coordinate using absolute coordinates. The current point then becomes the specified coordinate.</p></ol>

<p>The format of the DrawPathMoveToAbsolute method is:</p>

<pre class="code">
  void DrawPathMoveToAbsolute(DrawingWand *wand,const double x,
    const double y)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>x</h5>
<ol><p>target x ordinate</p></ol>

<h5>y</h5>
<ol><p>target y ordinate</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawPathMoveToRelative">DrawPathMoveToRelative</a></h2>
<div class="doc-section">

<p>DrawPathMoveToRelative() starts a new sub-path at the given coordinate using relative coordinates. The current point then becomes the specified coordinate.</p></ol>

<p>The format of the DrawPathMoveToRelative method is:</p>

<pre class="code">
  void DrawPathMoveToRelative(DrawingWand *wand,const double x,
    const double y)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>x</h5>
<ol><p>target x ordinate</p></ol>

<h5>y</h5>
<ol><p>target y ordinate</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawPathStart">DrawPathStart</a></h2>
<div class="doc-section">

<p>DrawPathStart() declares the start of a path drawing list which is terminated by a matching DrawPathFinish() command. All other DrawPath commands must be enclosed between a DrawPathStart() and a DrawPathFinish() command. This is because path drawing commands are subordinate commands and they do not function by themselves.</p></ol>

<p>The format of the DrawPathStart method is:</p>

<pre class="code">
  void DrawPathStart(DrawingWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawPoint">DrawPoint</a></h2>
<div class="doc-section">

<p>DrawPoint() draws a point using the current fill color.</p></ol>

<p>The format of the DrawPoint method is:</p>

<pre class="code">
  void DrawPoint(DrawingWand *wand,const double x,const double y)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>x</h5>
<ol><p>target x coordinate</p></ol>

<h5>y</h5>
<ol><p>target y coordinate</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawPolygon">DrawPolygon</a></h2>
<div class="doc-section">

<p>DrawPolygon() draws a polygon using the current stroke, stroke width, and fill color or texture, using the specified array of coordinates.</p></ol>

<p>The format of the DrawPolygon method is:</p>

<pre class="code">
  void DrawPolygon(DrawingWand *wand,
    const unsigned long number_coordinates,const PointInfo *coordinates)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>number_coordinates</h5>
<ol><p>number of coordinates</p></ol>

<h5>coordinates</h5>
<ol><p>coordinate array</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawPolyline">DrawPolyline</a></h2>
<div class="doc-section">

<p>DrawPolyline() draws a polyline using the current stroke, stroke width, and fill color or texture, using the specified array of coordinates.</p></ol>

<p>The format of the DrawPolyline method is:</p>

<pre class="code">
  void DrawPolyline(DrawingWand *wand,
    const unsigned long number_coordinates,const PointInfo *coordinates)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>number_coordinates</h5>
<ol><p>number of coordinates</p></ol>

<h5>coordinates</h5>
<ol><p>coordinate array</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawPopClipPath">DrawPopClipPath</a></h2>
<div class="doc-section">

<p>DrawPopClipPath() terminates a clip path definition.</p></ol>

<p>The format of the DrawPopClipPath method is:</p>

<pre class="code">
  void DrawPopClipPath(DrawingWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawPopDefs">DrawPopDefs</a></h2>
<div class="doc-section">

<p>DrawPopDefs() terminates a definition list.</p></ol>

<p>The format of the DrawPopDefs method is:</p>

<pre class="code">
  void DrawPopDefs(DrawingWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawPopPattern">DrawPopPattern</a></h2>
<div class="doc-section">

<p>DrawPopPattern() terminates a pattern definition.</p></ol>

<p>The format of the DrawPopPattern method is:</p>

<pre class="code">
  MagickBooleanType DrawPopPattern(DrawingWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawPushClipPath">DrawPushClipPath</a></h2>
<div class="doc-section">

<p>DrawPushClipPath() starts a clip path definition which is comprized of any number of drawing commands and terminated by a DrawPopClipPath() command.</p></ol>

<p>The format of the DrawPushClipPath method is:</p>

<pre class="code">
  void DrawPushClipPath(DrawingWand *wand,const char *clip_mask_id)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>clip_mask_id</h5>
<ol><p>string identifier to associate with the clip path for later use.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawPushDefs">DrawPushDefs</a></h2>
<div class="doc-section">

<p>DrawPushDefs() indicates that commands up to a terminating DrawPopDefs() command create named elements (e.g. clip-paths, textures, etc.) which may safely be processed earlier for the sake of efficiency.</p></ol>

<p>The format of the DrawPushDefs method is:</p>

<pre class="code">
  void DrawPushDefs(DrawingWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawPushPattern">DrawPushPattern</a></h2>
<div class="doc-section">

<p>DrawPushPattern() indicates that subsequent commands up to a DrawPopPattern() command comprise the definition of a named pattern. The pattern space is assigned top left corner coordinates, a width and height, and becomes its own drawing space.  Anything which can be drawn may be used in a pattern definition. Named patterns may be used as stroke or brush definitions.</p></ol>

<p>The format of the DrawPushPattern method is:</p>

<pre class="code">
  MagickBooleanType DrawPushPattern(DrawingWand *wand,
    const char *pattern_id,const double x,const double y,
    const double width,const double height)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>pattern_id</h5>
<ol><p>pattern identification for later reference</p></ol>

<h5>x</h5>
<ol><p>x ordinate of top left corner</p></ol>

<h5>y</h5>
<ol><p>y ordinate of top left corner</p></ol>

<h5>width</h5>
<ol><p>width of pattern space</p></ol>

<h5>height</h5>
<ol><p>height of pattern space</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawRectangle">DrawRectangle</a></h2>
<div class="doc-section">

<p>DrawRectangle() draws a rectangle given two coordinates and using the current stroke, stroke width, and fill settings.</p></ol>

<p>The format of the DrawRectangle method is:</p>

<pre class="code">
  void DrawRectangle(DrawingWand *wand,const double x1,
    const double y1,const double x2,const double y2)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>x1</h5>
<ol><p>x ordinate of first coordinate</p></ol>

<h5>y1</h5>
<ol><p>y ordinate of first coordinate</p></ol>

<h5>x2</h5>
<ol><p>x ordinate of second coordinate</p></ol>

<h5>y2</h5>
<ol><p>y ordinate of second coordinate</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawResetVectorGraphics">DrawResetVectorGraphics</a></h2>
<div class="doc-section">

<p>DrawResetVectorGraphics() resets the vector graphics associated with the specified wand.</p></ol>

<p>The format of the DrawResetVectorGraphics method is:</p>

<pre class="code">
  void DrawResetVectorGraphics(DrawingWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawRotate">DrawRotate</a></h2>
<div class="doc-section">

<p>DrawRotate() applies the specified rotation to the current coordinate space.</p></ol>

<p>The format of the DrawRotate method is:</p>

<pre class="code">
  void DrawRotate(DrawingWand *wand,const double degrees)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>degrees</h5>
<ol><p>degrees of rotation</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawRoundRectangle">DrawRoundRectangle</a></h2>
<div class="doc-section">

<p>DrawRoundRectangle() draws a rounted rectangle given two coordinates, x & y corner radiuses and using the current stroke, stroke width, and fill settings.</p></ol>

<p>The format of the DrawRoundRectangle method is:</p>

<pre class="code">
  void DrawRoundRectangle(DrawingWand *wand,double x1,double y1,
    double x2,double y2,double rx,double ry)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>x1</h5>
<ol><p>x ordinate of first coordinate</p></ol>

<h5>y1</h5>
<ol><p>y ordinate of first coordinate</p></ol>

<h5>x2</h5>
<ol><p>x ordinate of second coordinate</p></ol>

<h5>y2</h5>
<ol><p>y ordinate of second coordinate</p></ol>

<h5>rx</h5>
<ol><p>radius of corner in horizontal direction</p></ol>

<h5>ry</h5>
<ol><p>radius of corner in vertical direction</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawScale">DrawScale</a></h2>
<div class="doc-section">

<p>DrawScale() adjusts the scaling factor to apply in the horizontal and vertical directions to the current coordinate space.</p></ol>

<p>The format of the DrawScale method is:</p>

<pre class="code">
  void DrawScale(DrawingWand *wand,const double x,const double y)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>x</h5>
<ol><p>horizontal scale factor</p></ol>

<h5>y</h5>
<ol><p>vertical scale factor</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawSetBorderColor">DrawSetBorderColor</a></h2>
<div class="doc-section">

<p>DrawSetBorderColor() sets the border color to be used for drawing bordered objects.</p></ol>

<p>The format of the DrawSetBorderColor method is:</p>

<pre class="code">
  void DrawSetBorderColor(DrawingWand *wand,const PixelWand *border_wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>border_wand</h5>
<ol><p>border wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawSetClipPath">DrawSetClipPath</a></h2>
<div class="doc-section">

<p>DrawSetClipPath() associates a named clipping path with the image.  Only the areas drawn on by the clipping path will be modified as long as it remains in effect.</p></ol>

<p>The format of the DrawSetClipPath method is:</p>

<pre class="code">
  MagickBooleanType DrawSetClipPath(DrawingWand *wand,
    const char *clip_mask)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>clip_mask</h5>
<ol><p>name of clipping path to associate with image</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawSetClipRule">DrawSetClipRule</a></h2>
<div class="doc-section">

<p>DrawSetClipRule() set the polygon fill rule to be used by the clipping path.</p></ol>

<p>The format of the DrawSetClipRule method is:</p>

<pre class="code">
  void DrawSetClipRule(DrawingWand *wand,const FillRule fill_rule)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>fill_rule</h5>
<ol><p>fill rule (EvenOddRule or NonZeroRule)</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawSetClipUnits">DrawSetClipUnits</a></h2>
<div class="doc-section">

<p>DrawSetClipUnits() sets the interpretation of clip path units.</p></ol>

<p>The format of the DrawSetClipUnits method is:</p>

<pre class="code">
  void DrawSetClipUnits(DrawingWand *wand,
    const ClipPathUnits clip_units)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>clip_units</h5>
<ol><p>units to use (UserSpace, UserSpaceOnUse, or ObjectBoundingBox)</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawSetFillColor">DrawSetFillColor</a></h2>
<div class="doc-section">

<p>DrawSetFillColor() sets the fill color to be used for drawing filled objects.</p></ol>

<p>The format of the DrawSetFillColor method is:</p>

<pre class="code">
  void DrawSetFillColor(DrawingWand *wand,const PixelWand *fill_wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>fill_wand</h5>
<ol><p>fill wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawSetFillOpacity">DrawSetFillOpacity</a></h2>
<div class="doc-section">

<p>DrawSetFillOpacity() sets the opacity to use when drawing using the fill color or fill texture.  Fully opaque is 1.0.</p></ol>

<p>The format of the DrawSetFillOpacity method is:</p>

<pre class="code">
  void DrawSetFillOpacity(DrawingWand *wand,const double fill_opacity)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>fill_opacity</h5>
<ol><p>fill opacity</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawSetOpacity">DrawSetOpacity</a></h2>
<div class="doc-section">

<p>DrawSetOpacity() sets the opacity to use when drawing using the fill or stroke color or texture.  Fully opaque is 1.0.</p></ol>

<p>The format of the DrawSetOpacity method is:</p>

<pre class="code">
  void DrawSetOpacity(DrawingWand *wand,const double opacity)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>opacity</h5>
<ol><p>fill opacity</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawSetFillPatternURL">DrawSetFillPatternURL</a></h2>
<div class="doc-section">

<p>DrawSetFillPatternURL() sets the URL to use as a fill pattern for filling objects. Only local URLs ("#identifier") are supported at this time. These local URLs are normally created by defining a named fill pattern with DrawPushPattern/DrawPopPattern.</p></ol>

<p>The format of the DrawSetFillPatternURL method is:</p>

<pre class="code">
  MagickBooleanType DrawSetFillPatternURL(DrawingWand *wand,
    const char *fill_url)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>fill_url</h5>
<ol><p>URL to use to obtain fill pattern.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawSetFillRule">DrawSetFillRule</a></h2>
<div class="doc-section">

<p>DrawSetFillRule() sets the fill rule to use while drawing polygons.</p></ol>

<p>The format of the DrawSetFillRule method is:</p>

<pre class="code">
  void DrawSetFillRule(DrawingWand *wand,const FillRule fill_rule)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>fill_rule</h5>
<ol><p>fill rule (EvenOddRule or NonZeroRule)</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawSetFont">DrawSetFont</a></h2>
<div class="doc-section">

<p>DrawSetFont() sets the fully-sepecified font to use when annotating with text.</p></ol>

<p>The format of the DrawSetFont method is:</p>

<pre class="code">
  MagickBooleanType DrawSetFont(DrawingWand *wand,const char *font_name)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>font_name</h5>
<ol><p>font name</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawSetFontFamily">DrawSetFontFamily</a></h2>
<div class="doc-section">

<p>DrawSetFontFamily() sets the font family to use when annotating with text.</p></ol>

<p>The format of the DrawSetFontFamily method is:</p>

<pre class="code">
  MagickBooleanType DrawSetFontFamily(DrawingWand *wand,
    const char *font_family)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>font_family</h5>
<ol><p>font family</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawSetFontSize">DrawSetFontSize</a></h2>
<div class="doc-section">

<p>DrawSetFontSize() sets the font pointsize to use when annotating with text.</p></ol>

<p>The format of the DrawSetFontSize method is:</p>

<pre class="code">
  void DrawSetFontSize(DrawingWand *wand,const double pointsize)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>pointsize</h5>
<ol><p>text pointsize</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawSetFontStretch">DrawSetFontStretch</a></h2>
<div class="doc-section">

<p>DrawSetFontStretch() sets the font stretch to use when annotating with text. The AnyStretch enumeration acts as a wild-card "don't care" option.</p></ol>

<p>The format of the DrawSetFontStretch method is:</p>

<pre class="code">
  void DrawSetFontStretch(DrawingWand *wand,
    const StretchType font_stretch)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>font_stretch</h5>
<ol><p>font stretch (NormalStretch, UltraCondensedStretch, CondensedStretch, SemiCondensedStretch, SemiExpandedStretch, ExpandedStretch, ExtraExpandedStretch, UltraExpandedStretch, AnyStretch)</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawSetFontStyle">DrawSetFontStyle</a></h2>
<div class="doc-section">

<p>DrawSetFontStyle() sets the font style to use when annotating with text. The AnyStyle enumeration acts as a wild-card "don't care" option.</p></ol>

<p>The format of the DrawSetFontStyle method is:</p>

<pre class="code">
  void DrawSetFontStyle(DrawingWand *wand,const StyleType style)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>style</h5>
<ol><p>font style (NormalStyle, ItalicStyle, ObliqueStyle, AnyStyle)</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawSetFontWeight">DrawSetFontWeight</a></h2>
<div class="doc-section">

<p>DrawSetFontWeight() sets the font weight to use when annotating with text.</p></ol>

<p>The format of the DrawSetFontWeight method is:</p>

<pre class="code">
  void DrawSetFontWeight(DrawingWand *wand,
    const unsigned long font_weight)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>font_weight</h5>
<ol><p>font weight (valid range 100-900)</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawSetGravity">DrawSetGravity</a></h2>
<div class="doc-section">

<p>DrawSetGravity() sets the text placement gravity to use when annotating with text.</p></ol>

<p>The format of the DrawSetGravity method is:</p>

<pre class="code">
  void DrawSetGravity(DrawingWand *wand,const GravityType gravity)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>gravity</h5>
<ol><p>positioning gravity (NorthWestGravity, NorthGravity, NorthEastGravity, WestGravity, CenterGravity, EastGravity, SouthWestGravity, SouthGravity, SouthEastGravity)</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawSetStrokeColor">DrawSetStrokeColor</a></h2>
<div class="doc-section">

<p>DrawSetStrokeColor() sets the color used for stroking object outlines.</p></ol>

<p>The format of the DrawSetStrokeColor method is:</p>

<pre class="code">
  void DrawSetStrokeColor(DrawingWand *wand,
    const PixelWand *stroke_wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>stroke_wand</h5>
<ol><p>stroke wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawSetStrokePatternURL">DrawSetStrokePatternURL</a></h2>
<div class="doc-section">

<p>DrawSetStrokePatternURL() sets the pattern used for stroking object outlines.</p></ol>

<p>The format of the DrawSetStrokePatternURL method is:</p>

<pre class="code">
  MagickBooleanType DrawSetStrokePatternURL(DrawingWand *wand,
    const char *stroke_url)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>stroke_url</h5>
<ol><p>URL specifying pattern ID (e.g. "#pattern_id")</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawSetStrokeAntialias">DrawSetStrokeAntialias</a></h2>
<div class="doc-section">

<p>DrawSetStrokeAntialias() controls whether stroked outlines are antialiased. Stroked outlines are antialiased by default.  When antialiasing is disabled stroked pixels are thresholded to determine if the stroke color or underlying canvas color should be used.</p></ol>

<p>The format of the DrawSetStrokeAntialias method is:</p>

<pre class="code">
  void DrawSetStrokeAntialias(DrawingWand *wand,
    const MagickBooleanType stroke_antialias)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>stroke_antialias</h5>
<ol><p>set to false (zero) to disable antialiasing</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawSetStrokeDashArray">DrawSetStrokeDashArray</a></h2>
<div class="doc-section">

<p>DrawSetStrokeDashArray() specifies the pattern of dashes and gaps used to stroke paths. The stroke dash array represents an array of numbers that specify the lengths of alternating dashes and gaps in pixels. If an odd number of values is provided, then the list of values is repeated to yield an even number of values. To remove an existing dash array, pass a zero number_elements argument and null dash_array.  A typical stroke dash array might contain the members 5 3 2.</p></ol>

<p>The format of the DrawSetStrokeDashArray method is:</p>

<pre class="code">
  MagickBooleanType DrawSetStrokeDashArray(DrawingWand *wand,
    const unsigned long number_elements,const double *dash_array)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>number_elements</h5>
<ol><p>number of elements in dash array</p></ol>

<h5>dash_array</h5>
<ol><p>dash array values</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawSetStrokeDashOffset">DrawSetStrokeDashOffset</a></h2>
<div class="doc-section">

<p>DrawSetStrokeDashOffset() specifies the offset into the dash pattern to start the dash.</p></ol>

<p>The format of the DrawSetStrokeDashOffset method is:</p>

<pre class="code">
  void DrawSetStrokeDashOffset(DrawingWand *wand,
    const double dash_offset)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>dash_offset</h5>
<ol><p>dash offset</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawSetStrokeLineCap">DrawSetStrokeLineCap</a></h2>
<div class="doc-section">

<p>DrawSetStrokeLineCap() specifies the shape to be used at the end of open subpaths when they are stroked. Values of LineCap are UndefinedCap, ButtCap, RoundCap, and SquareCap.</p></ol>

<p>The format of the DrawSetStrokeLineCap method is:</p>

<pre class="code">
  void DrawSetStrokeLineCap(DrawingWand *wand,
    const LineCap linecap)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>linecap</h5>
<ol><p>linecap style</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawSetStrokeLineJoin">DrawSetStrokeLineJoin</a></h2>
<div class="doc-section">

<p>DrawSetStrokeLineJoin() specifies the shape to be used at the corners of paths (or other vector shapes) when they are stroked. Values of LineJoin are UndefinedJoin, MiterJoin, RoundJoin, and BevelJoin.</p></ol>

<p>The format of the DrawSetStrokeLineJoin method is:</p>

<pre class="code">
  void DrawSetStrokeLineJoin(DrawingWand *wand,
    const LineJoin linejoin)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>linejoin</h5>
<ol><p>line join style</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawSetStrokeMiterLimit">DrawSetStrokeMiterLimit</a></h2>
<div class="doc-section">

<p>DrawSetStrokeMiterLimit() specifies the miter limit. When two line segments meet at a sharp angle and miter joins have been specified for 'lineJoin', it is possible for the miter to extend far beyond the thickness of the line stroking the path. The miterLimit' imposes a limit on the ratio of the miter length to the 'lineWidth'.</p></ol>

<p>The format of the DrawSetStrokeMiterLimit method is:</p>

<pre class="code">
  void DrawSetStrokeMiterLimit(DrawingWand *wand,
    const unsigned long miterlimit)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>miterlimit</h5>
<ol><p>miter limit</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawSetStrokeOpacity">DrawSetStrokeOpacity</a></h2>
<div class="doc-section">

<p>DrawSetStrokeOpacity() specifies the opacity of stroked object outlines.</p></ol>

<p>The format of the DrawSetStrokeOpacity method is:</p>

<pre class="code">
  void DrawSetStrokeOpacity(DrawingWand *wand,
    const double stroke_opacity)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>stroke_opacity</h5>
<ol><p>stroke opacity.  The value 1.0 is opaque.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawSetStrokeWidth">DrawSetStrokeWidth</a></h2>
<div class="doc-section">

<p>DrawSetStrokeWidth() sets the width of the stroke used to draw object outlines.</p></ol>

<p>The format of the DrawSetStrokeWidth method is:</p>

<pre class="code">
  void DrawSetStrokeWidth(DrawingWand *wand,
    const double stroke_width)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>stroke_width</h5>
<ol><p>stroke width</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawSetTextAlignment">DrawSetTextAlignment</a></h2>
<div class="doc-section">

<p>DrawSetTextAlignment() specifies a text alignment to be applied when annotating with text.</p></ol>

<p>The format of the DrawSetTextAlignment method is:</p>

<pre class="code">
  void DrawSetTextAlignment(DrawingWand *wand,const AlignType alignment)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>alignment</h5>
<ol><p>text alignment.  One of UndefinedAlign, LeftAlign, CenterAlign, or RightAlign.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawSetTextAntialias">DrawSetTextAntialias</a></h2>
<div class="doc-section">

<p>DrawSetTextAntialias() controls whether text is antialiased.  Text is antialiased by default.</p></ol>

<p>The format of the DrawSetTextAntialias method is:</p>

<pre class="code">
  void DrawSetTextAntialias(DrawingWand *wand,
    const MagickBooleanType text_antialias)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>text_antialias</h5>
<ol><p>antialias boolean. Set to false (0) to disable antialiasing.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawSetTextDecoration">DrawSetTextDecoration</a></h2>
<div class="doc-section">

<p>DrawSetTextDecoration() specifies a decoration to be applied when annotating with text.</p></ol>

<p>The format of the DrawSetTextDecoration method is:</p>

<pre class="code">
  void DrawSetTextDecoration(DrawingWand *wand,
    const DecorationType decoration)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>decoration</h5>
<ol><p>text decoration.  One of NoDecoration, UnderlineDecoration, OverlineDecoration, or LineThroughDecoration</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawSetTextEncoding">DrawSetTextEncoding</a></h2>
<div class="doc-section">

<p>DrawSetTextEncoding() specifies the code set to use for text annotations. The only character encoding which may be specified at this time is "UTF-8" for representing Unicode as a sequence of bytes. Specify an empty string to set text encoding to the system's default. Successful text annotation using Unicode may require fonts designed to support Unicode.</p></ol>

<p>The format of the DrawSetTextEncoding method is:</p>

<pre class="code">
  void DrawSetTextEncoding(DrawingWand *wand,const char *encoding)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>encoding</h5>
<ol><p>character string specifying text encoding</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawSetTextKerning">DrawSetTextKerning</a></h2>
<div class="doc-section">

<p>DrawSetTextKerning() sets the spacing between characters in text.</p></ol>

<p>The format of the DrawSetTextKerning method is:</p>

<pre class="code">
  void DrawSetTextKerning(DrawingWand *wand,const double kerning)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>kerning</h5>
<ol><p>text kerning</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawSetTextInterwordSpacing">DrawSetTextInterwordSpacing</a></h2>
<div class="doc-section">

<p>DrawSetTextInterwordSpacing() sets the spacing between line in text.</p></ol>

<p>The format of the DrawSetInterwordSpacing method is:</p>

<pre class="code">
  void DrawSetTextInterwordSpacing(DrawingWand *wand,
    const double interline_spacing)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>interline_spacing</h5>
<ol><p>text line spacing</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawSetTextInterwordSpacing">DrawSetTextInterwordSpacing</a></h2>
<div class="doc-section">

<p>DrawSetTextInterwordSpacing() sets the spacing between words in text.</p></ol>

<p>The format of the DrawSetInterwordSpacing method is:</p>

<pre class="code">
  void DrawSetTextInterwordSpacing(DrawingWand *wand,
    const double interword_spacing)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>interword_spacing</h5>
<ol><p>text word spacing</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawSetTextUnderColor">DrawSetTextUnderColor</a></h2>
<div class="doc-section">

<p>DrawSetTextUnderColor() specifies the color of a background rectangle to place under text annotations.</p></ol>

<p>The format of the DrawSetTextUnderColor method is:</p>

<pre class="code">
  void DrawSetTextUnderColor(DrawingWand *wand,
    const PixelWand *under_wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>under_wand</h5>
<ol><p>text under wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawSetVectorGraphics">DrawSetVectorGraphics</a></h2>
<div class="doc-section">

<p>DrawSetVectorGraphics() sets the vector graphics associated with the specified wand.  Use this method with DrawGetVectorGraphics() as a method to persist the vector graphics state.</p></ol>

<p>The format of the DrawSetVectorGraphics method is:</p>

<pre class="code">
  MagickBooleanType DrawSetVectorGraphics(DrawingWand *wand,
    const char *xml)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>xml</h5>
<ol><p>the drawing wand XML.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawSkewX">DrawSkewX</a></h2>
<div class="doc-section">

<p>DrawSkewX() skews the current coordinate system in the horizontal direction.</p></ol>

<p>The format of the DrawSkewX method is:</p>

<pre class="code">
  void DrawSkewX(DrawingWand *wand,const double degrees)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>degrees</h5>
<ol><p>number of degrees to skew the coordinates</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawSkewY">DrawSkewY</a></h2>
<div class="doc-section">

<p>DrawSkewY() skews the current coordinate system in the vertical direction.</p></ol>

<p>The format of the DrawSkewY method is:</p>

<pre class="code">
  void DrawSkewY(DrawingWand *wand,const double degrees)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>degrees</h5>
<ol><p>number of degrees to skew the coordinates</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawTranslate">DrawTranslate</a></h2>
<div class="doc-section">

<p>DrawTranslate() applies a translation to the current coordinate system which moves the coordinate system origin to the specified coordinate.</p></ol>

<p>The format of the DrawTranslate method is:</p>

<pre class="code">
  void DrawTranslate(DrawingWand *wand,const double x,
    const double y)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>x</h5>
<ol><p>new x ordinate for coordinate system origin</p></ol>

<h5>y</h5>
<ol><p>new y ordinate for coordinate system origin</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="DrawSetViewbox">DrawSetViewbox</a></h2>
<div class="doc-section">

<p>DrawSetViewbox() sets the overall canvas size to be recorded with the drawing vector data.  Usually this will be specified using the same size as the canvas image.  When the vector data is saved to SVG or MVG formats, the viewbox is use to specify the size of the canvas image that a viewer will render the vector data on.</p></ol>

<p>The format of the DrawSetViewbox method is:</p>

<pre class="code">
  void DrawSetViewbox(DrawingWand *wand,unsigned long x1,
    unsigned long y1,unsigned long x2,unsigned long y2)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

<h5>x1</h5>
<ol><p>left x ordinate</p></ol>

<h5>y1</h5>
<ol><p>top y ordinate</p></ol>

<h5>x2</h5>
<ol><p>right x ordinate</p></ol>

<h5>y2</h5>
<ol><p>bottom y ordinate</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="IsDrawingWand">IsDrawingWand</a></h2>
<div class="doc-section">

<p>IsDrawingWand() returns MagickTrue if the wand is verified as a drawing wand.</p></ol>

<p>The format of the IsDrawingWand method is:</p>

<pre class="code">
  MagickBooleanType IsDrawingWand(const DrawingWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="NewDrawingWand">NewDrawingWand</a></h2>
<div class="doc-section">

<p>NewDrawingWand() returns a drawing wand required for all other methods in the API.</p></ol>

<p>The format of the NewDrawingWand method is:</p>

<pre class="code">
  DrawingWand NewDrawingWand(void)
</pre>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="PeekDrawingWand">PeekDrawingWand</a></h2>
<div class="doc-section">

<p>PeekDrawingWand() returns the current drawing wand.</p></ol>

<p>The format of the PeekDrawingWand method is:</p>

<pre class="code">
  DrawInfo *PeekDrawingWand(const DrawingWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="PopDrawingWand">PopDrawingWand</a></h2>
<div class="doc-section">

<p>PopDrawingWand() destroys the current drawing wand and returns to the previously pushed drawing wand. Multiple drawing wands may exist. It is an error to attempt to pop more drawing wands than have been pushed, and it is proper form to pop all drawing wands which have been pushed.</p></ol>

<p>The format of the PopDrawingWand method is:</p>

<pre class="code">
  MagickBooleanType PopDrawingWand(DrawingWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/drawing-wand
_8c.html" target="source" name="PushDrawingWand">PushDrawingWand</a></h2>
<div class="doc-section">

<p>PushDrawingWand() clones the current drawing wand to create a new drawing wand.  The original drawing wand(s) may be returned to by invoking PopDrawingWand().  The drawing wands are stored on a drawing wand stack. For every Pop there must have already been an equivalent Push.</p></ol>

<p>The format of the PushDrawingWand method is:</p>

<pre class="code">
  MagickBooleanType PushDrawingWand(DrawingWand *wand)
</pre>

<p>A description of each parameter follows:</p></ol>

<h5>wand</h5>
<ol><p>the drawing wand.</p></ol>

 </div>

</div>

<div id="linkbar">
 <!--    <span id="linkbar-west">&nbsp;</span>  -->
    <span id="linkbar-center">
      <a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> &bull;
    <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>
    </span>
    <span id="linkbar-east">&nbsp;</span>
  </div>
  <div class="footer">
    <span id="footer-west">&copy; 1999-2010 ImageMagick Studio LLC</span>
    <span id="footer-east"> <a href="../http://www.imagemagick.org/script/contact.php">Contact the Wizards</a></span>
  </div>
  <div style="clear: both; margin: 0; width: 100%; "></div>
</body>
</html>
