Drawableは、Image::draw()メソッドにベクター、画像、またはテキスト引数を準備するための便利なインターフェースを提供します。Drawableサブクラスの各インスタンスは、単一の描画可能オブジェクトを表します。描画可能オブジェクトは、Imageのdraw()メソッドを複数回呼び出すことで「1つずつ」描画することも、描画可能オブジェクトのリストをImageのdraw()メソッドに渡すことで「一度にすべて」描画することもできます。1つずつのアプローチは単純な描画に便利ですが、リストベースのアプローチはより高度な描画に適しています。
以下は、Drawableサブクラスを1つずつのアプローチで使用して次の図形を描画する例です。
Drawableはオブジェクトであるため、後で(繰り返し)使用するために配列またはリストに保存できます。次の例は、リストベースのアプローチを使用して同じ図形を描画する方法を示しています。
Drawableは、x、y座標のペアを表す単純なCoordinate構造体に依存します。Coordinate構造体によって提供されるメソッドを次の表に示します。
Coordinate構造体のメソッド
メソッド/メンバー |
シグネチャ |
説明 |
---|---|---|
Coordinate |
void |
デフォルトコンストラクタ |
double x_, double y_ |
コンストラクタ、firstとsecondを設定 | |
x |
double x_ |
x座標メンバー |
y |
double y_ |
y座標メンバー |
Drawableクラスを次の表に示します。ここでは、コンストラクタのシグネチャのみを記載しています。各Drawableクラスは、個々のパラメータを調整するためのメソッドも提供します。
Drawableクラス
サブクラス |
コンストラクタシグネチャ |
説明 |
---|---|---|
DrawableAffine |
double sx_, double sy_, double rx_, double ry_, double tx_, double ty_ |
同じまたは下位の描画コンテキストで後続に描画されるオブジェクトのスケーリング、回転、および平行移動(座標変換)を調整するための変換行列を指定します。 sx_とsy_パラメータはxとyのスケールファクターを表し、rx_とry_パラメータはxとyの回転を表し、tx_とty_パラメータはxとyの平行移動を表します。 |
void |
同じまたは下位の描画コンテキストで後続に描画されるオブジェクトのスケーリング、回転、および平行移動(座標変換)を調整するための変換行列を指定します。単位行列(効果なし)アフィン値に初期化されます。クラスメソッド(現在ドキュメント化されていません)を使用して、個々のパラメータを単位値から調整します。 | |
DrawableAngle |
double angle_ |
描画角度を設定します |
DrawableArc |
double startX_, double startY_, double endX_, double endY_, double startDegrees, double endDegrees_ |
stroke色を使用して、座標startX_、startY_で始まり、座標endX_、endY_で終わり、回転円弧startDegrees_、endDegrees_で囲まれた円に基づいて円弧を描画します。 |
DrawableBezier |
const std::list<Magick::Coordinate> &coordinates_ |
stroke色を使用して、coordinates_リストで指定された座標に基づいてベジェ曲線を描画します。 |
DrawableClipPath |
const std::string &id_ |
id_に一致する描画クリップパスを選択します。 |
DrawableCircle |
double originX_, double originY_, double perimX_, double perimY_ |
指定された原点と周囲の座標を使用して、strokeの色と太さで円を描画します。 fill色が指定されている場合、オブジェクトは塗りつぶされます。 |
DrawableColor |
double x_, double y_, PaintMethod paintMethod_ |
paintMethodに従って画像を着色します。 pointメソッドはターゲットピクセルを再着色します。 replaceメソッドは、ターゲットピクセルの色と一致するピクセルを再着色します。 floodfillは、ターゲットピクセルの色と一致し、隣接しているピクセルを再着色しますが、filltoborderは境界色ではない隣接ピクセルを再着色します。 最後に、resetはすべてのピクセルを再着色します。 |
DrawableCompositeImage |
double x_, double y_, const std::string &filename_ |
指定された座標で、現在の画像を指定された画像の内容と合成します。 matte属性がtrueに設定されている場合、画像の合成は画像ファイルに存在するアルファチャネル、つまり透明度を考慮するため、不透明でない部分は合成画像の一部(または全部)を透けて表示させます。 |
double x_, double y_, const Image &image_ | ||
double x_, double y_, double width_, double height_, const std::string &filename_ |
指定された座標で、指定された幅と高さでレンダリングされた指定された画像の内容と現在の画像を合成します。 matte属性がtrueに設定されている場合、画像の合成は画像ファイルに存在するアルファチャネル、つまり透明度を考慮するため、不透明でない部分は合成画像の一部(または全部)を透けて表示させます。指定されたwidthまたはheightがゼロの場合、画像は拡大または縮小されることなく、自然なサイズで合成されます。 | |
double x_, double y_, double width_, double height_, const Image &image_ | ||
double x_, double y_, double width_, double height_, const std::string &filename_, CompositeOperator composition_ |
指定された座標で、指定された合成アルゴリズムを使用して、指定された幅と高さでレンダリングされた指定された画像の内容と現在の画像を合成します。 matte属性がtrueに設定されている場合、画像の合成は画像ファイルに存在するアルファチャネル、つまり透明度を考慮するため、不透明でない部分は合成画像の一部(または全部)を透けて表示させます。指定されたwidthまたはheightがゼロの場合、画像は拡大または縮小されることなく、自然なサイズで合成されます。 | |
double x_, double y_, double width_, double height_, const Image &image_, CompositeOperator composition_ | ||
DrawableDashArray |
const double* dasharray_ |
パスをストロークするために使用されるダッシュとギャップのパターンを指定します。 strokeDashArrayは、ダッシュとギャップの長さをピクセル単位で交互に指定する数値のゼロ終端配列を表します。奇数個の値が指定された場合、値のリストは繰り返されて偶数個の値になります。 典型的なstrokeDashArray_配列には、メンバー5 3 2 0が含まれている場合があります。ここで、ゼロ値はパターン配列の終わりを示します。 |
DrawableDashOffset |
double offset_ |
ダッシュを開始するダッシュパターンまでの距離を指定します。SVGの stroke-dashoffset プロパティのドキュメントを参照して、使用方法の詳細を確認してください。 |
DrawableEllipse |
double originX_, double originY_, double radiusX_, double radiusY_, double arcStart_, double arcEnd_ |
strokeの色と太さ、指定された原点、xとyの半径、および度単位で指定された円弧の開始と終了を使用して楕円を描画します。 fill色が指定されている場合、オブジェクトは塗りつぶされます。 |
DrawableFillColor |
const Color &color_ |
描画オブジェクトの塗りつぶしの色を指定します。 |
DrawableFillRule |
FillRule fillRule_ |
キャンバスのどの部分がシェイプの内側に含まれるかを決定するために使用されるアルゴリズムを指定します。SVGの fill-rule プロパティのドキュメントを参照して、使用方法の詳細を確認してください。 |
DrawableFillOpacity |
double opacity_ |
塗りつぶしの色を使用して描画するときに使用する不透明度を指定します。 |
DrawableFont |
const std::string &font_ |
テキストを描画するときに使用するフォント名を指定します。 |
const std::string &family_, |
テキストを描画するときに使用されるフォントを選択するために使用されるフォントファミリー、スタイル、太さ({100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900}のセットのいずれかで、400が通常のサイズ)、およびストレッチを指定します。ワイルドカード一致は、AnyStyle列挙型を介してスタイルに適用され、weightがゼロの場合はweightに適用され、AnyStretch列挙型を介してストレッチに適用されます。 | |
DrawableGravity |
GravityType gravity_ |
テキスト配置の重心を指定します。 |
DrawableLine |
double startX_, double startY_, double endX_, double endY_ |
開始座標と終了座標を使用して、strokeの色と太さで線を描画します。 |
DrawableMatte |
double x_, double y_, PaintMethod paintMethod_ |
ピクセルのマット値を透明に変更します。 pointメソッドは、ターゲットピクセルのマット値を変更します。 replaceメソッドは、ターゲットピクセルの色と一致するピクセルのマット値を変更します。 floodfillは、ターゲットピクセルの色と一致し、隣接しているピクセルのマット値を変更しますが、filltoborderは境界色ではない隣接ピクセルのマット値を変更します. 最後に、resetはすべてのピクセルのマット値を変更します。 |
DrawableMiterLimit |
size_t miterLimit_ |
マイターリミットを指定します。2つの線分が鋭角で交差し、「lineJoin」にマイター結合が指定されている場合、マイターがパスのストローク線の太さをはるかに超えて延びる可能性があります。 「miterLimit」は、マイターの長さと「lineWidth」の比率に制限を課します。 このパラメータのデフォルト値は4です。 |
DrawablePath |
const std::list<Magick::VPath> &path_ |
ベクターパスを使用して画像に描画します。 |
DrawablePoint |
double x_, double y_ |
指定された座標に、strokeの色と太さで点を描画します。 |
DrawablePointSize |
double pointSize_ |
フォントのポイントサイズを設定します。 |
DrawablePolygon |
const std::list<Magick::Coordinate> &coordinates_ |
STLリストに含まれる3つ以上の座標で構成される、strokeの色と太さを使用して任意のポリゴンを描画します。 fill色が指定されている場合、オブジェクトは塗りつぶされます。 |
DrawablePolyline |
const std::list<Magick::Coordinate> &coordinates_ |
STLリストに含まれる3つ以上の座標で構成される、strokeの色と太さを使用して任意のポリラインを描画します。 fill色が指定されている場合、オブジェクトは塗りつぶされます。 |
DrawablePopClipPath |
void |
DrawablePushClipPath によって開始されたクリップパスの定義を終了(ポップ)します。 |
DrawablePopGraphicContext |
void |
グラフィックコンテキストをポップします。現在のグラフィックコンテキストをグラフィックコンテキストスタックから削除すると、オプションは前の DrawablePushGraphicContext 操作より前の値に戻ります。 |
DrawablePushClipPath |
const std::string &id_ |
ID を指定してクリップパスの定義を開始(プッシュ)します。クリップパスの定義は、後続の描画コマンドで構成され、DrawablePopClipPath によって終了します。 |
DrawablePushGraphicContext |
void |
グラフィックコンテキストをプッシュします。グラフィックコンテキストがプッシュされると、コンテキストがプッシュされた後に設定されたオプション(座標変換、色の設定など)は、新しいグラフィックコンテキストに保存されます。これにより、関連するオプションをグラフィックコンテキストの「スタック」に保存して、オプションの階層的なネストをサポートできます。 DrawablePopGraphicContext を使用して現在のグラフィックコンテキストをポップすると、最後の DrawablePushGraphicContext 操作中に有効だったオプションが復元されます。 |
DrawablePushPattern |
std::string &id_, ssize_t x_, ssize_t y_, size_t width_, size_t height_ |
id_ で指定された任意のパターン名、x_ および y_ で指定されたパターンオフセット、width_ および height_ で指定されたパターンサイズで、パターンの定義を開始します。パターンは、指定されたオフセットとサイズで定義された座標系内で定義されます。任意の描画オブジェクト( DrawableCompositeImageを含む)を DrawablePushPattern と DrawablePopPattern の間に指定して、パターンを描画できます。通常、ペア DrawablePushGraphicContext & DrawablePopGraphicContext を使用してパターンの定義を囲みます。パターンの定義は、 DrawablePopPattern オブジェクトによって終了します。 |
DrawablePopPattern |
void |
|
DrawableRectangle |
double upperLeftX_, double upperLeftY_, double lowerRightX_, double lowerRightY |
左上の座標から右下の座標まで、ストロークの色と太さを使用して長方形を描画します。塗りつぶし色が指定されている場合、オブジェクトは塗りつぶされます。 |
DrawableRotation |
double angle_ |
描画時に使用する回転を設定します(座標変換)。 |
DrawableRoundRectangle |
double centerX_, double centerY_, double width_, double hight_, double cornerWidth_, double cornerHeight_ |
指定された中心座標、幅と高さ、角の幅と高さで、ストロークの色と太さを使用して角丸長方形を描画します。塗りつぶし色が指定されている場合、オブジェクトは塗りつぶされます。 |
DrawableScaling |
double x_, double y_ |
オブジェクトの描画中に、x 方向と y 方向にスケーリングを適用します(座標変換)。 |
DrawableSkewX |
double angle_ |
X 方向にスキューを適用します(座標変換)。 |
DrawableSkewY |
double angle_ |
Y 方向にスキューを適用します。 |
DrawableStrokeAntialias |
bool flag_ |
線またはオブジェクトの輪郭を描画するときにアンチエイリアスを適用します。 |
DrawableStrokeColor |
const Color &color_ |
線またはオブジェクトの輪郭を描画するときに使用する色を設定します。 |
DrawableStrokeLineCap |
LineCap linecap_ |
開いたサブパスの端がストロークされるときに使用する形状を指定します。LineCap の値は、UndefinedCap、ButtCap、RoundCap、SquareCap です。 |
DrawableStrokeLineJoin |
LineJoin linejoin_ |
パス(または他のベクトル形状)の角がストロークされるときに使用する形状を指定します。LineJoin の値は、UndefinedJoin、MiterJoin、RoundJoin、BevelJoin です。 |
DrawableStrokeOpacity |
double opacity_ |
線またはオブジェクトの輪郭を描画するときに使用する不透明度。 |
DrawableStrokeWidth |
double width_ |
線またはオブジェクトの輪郭を描画するときに使用する幅を設定します。 |
DrawableText |
double x_, double y_, std::string text_ |
指定された座標に、ストロークの色、フォント、フォントポイントサイズ、およびボックスの色(テキストの背景色)を使用して、画像にテキストで注釈を付けます。テキストに 特殊なフォーマット文字 が含まれている場合、画像のファイル名、種類、幅、高さ、またはその他の画像属性がテキストに組み込まれる場合があります(label()を参照)。 |
const double x_, const double y_, const std::string &text_, const std::string &encoding_ |
指定された座標に、現在のストロークの色、フォント、フォントポイントサイズ、ボックスの色(テキストの背景色)を使用して、テキストエンコーディングで表されるテキストで画像に注釈を付けます。テキストに 特殊なフォーマット文字 が含まれている場合、画像のファイル名、種類、幅、高さ、またはその他の画像属性がテキストに組み込まれる場合があります(label()を参照)。 テキストエンコーディングは、テキスト注釈に使用するコードセットを指定します。現在指定できる文字エンコーディングは、UTF-8」のみで、 Unicode をバイトシーケンスとして表します。テキストエンコーディングをシステムのデフォルトに設定するには、空の文字列を指定します。Unicode を使用したテキスト注釈が成功するには、Unicode をサポートするように設計されたフォントが必要になる場合があります。 | |
DrawableTextAntialias |
bool flag_ |
テキストを描画するときにアンチエイリアスを適用します(デフォルトは true)。テキストのアンチエイリアスを無効にする主な理由は、画像に新しい色が追加されないようにするためです。 |
DecorationType decoration_ |
テキストに適用する装飾(例:UnderlineDecoration)を指定します。 | |
DrawableTextUnderColor |
const Color &color_ |
指定された色を使用して、レンダリングされたテキストの下にボックスを描画します。 |
DrawableTranslation |
double x_, double y_ |
座標変換を適用します(新しい座標原点を設定します)。 |
DrawableViewbox |
ssize_t x1_, ssize_t y1_, ssize_t x2_, ssize_t y2_ |
出力ビューボックスの寸法。画像をベクトル形式(例:MVG または SVG)に書き込む場合、DrawablePushGraphicContext()オブジェクトをリストの先頭にプッシュし、続いて DrawableViewbox()ステートメントを使用して出力キャンバスサイズを設定する必要があります。対応する DrawablePopGraphicContext()オブジェクトをリストの末尾にプッシュする必要があります。 |
Magick++ でサポートされているベクトルパスは、SVG XML 仕様でサポートされているベクトルパスに基づいています。ベクトルパスは直接描画できません。描画可能なオブジェクトを作成するには、最初にDrawablePathクラスのコンストラクタ引数としてベクトルパスを提供する必要があります。DrawablePathクラスは、必要に応じて再生できる描画可能な複合コンポーネントを効果的に作成します。描画可能な複合コンポーネントが相対座標を使用するベクトルパスオブジェクトのみで構成されている場合、現在の描画座標を設定する *DrawablePath* を前に付けることで、オブジェクトを画像上に配置できます。代わりに、座標変換を使用して原点を平行移動してオブジェクトを配置したり、回転したり、スキューしたり、スケーリングしたりできます。
「moveto」コマンドは、新しい現在点を設定します。「ペン」を持ち上げて新しい場所に移動したかのようになります。パスデータセグメントは、「moveto」コマンドまたは「arc」コマンドのいずれかで始まる必要があります。後続の「moveto」コマンド(つまり、「moveto」が最初のコマンドではない場合)は、新しいサブパスの開始を表します。
Moveto クラス
サブクラス |
コンストラクタシグネチャ |
説明 |
---|---|---|
const Magick::Coordinate &coordinate_ |
指定された座標に新しいサブパスを開始します。*PathMovetoAbs* は絶対座標が続くことを示し、*PathMovetoRel* は相対座標が続くことを示します。相対 moveto がパスの最初の要素として表示される場合、それは絶対座標のペアとして扱われます。moveto の後に複数の座標ペアが続く場合、後続のペアは暗黙の lineto コマンドとして扱われます。 | |
const std::list<Magick::Coordinate> &coordinates_ | ||
const Magick::Coordinate &coordinate_ | ||
const std::list<Magick::Coordinate> &coordinates_ |
「closepath」コマンドは、現在点から現在のサブパスの初期点まで自動的に直線が描画されるようにします。
Closepath クラス
サブクラス |
コンストラクタシグネチャ |
説明 |
---|---|---|
void |
現在点から現在のサブパスの最新の開始点(通常は最新の moveto 点)まで直線を描画することにより、現在のサブパスを閉じます。 |
さまざまな「lineto」コマンドは、現在点から新しい点まで直線を描画します。
Lineto クラス
サブクラス |
コンストラクタシグネチャ |
説明 |
---|---|---|
const Magick::Coordinate& coordinate_ |
現在点から指定された座標まで直線を描画し、それが新しい現在点になります。*PathLinetoAbs* は絶対座標が使用されることを示し、*PathLinetoRel* は相対座標が使用されることを示します。座標ペアをリストに複数指定して、ポリラインを描画できます。コマンドの最後に、新しい現在点は提供された最後の座標セットに設定されます。 | |
const std::list<Magick::Coordinate> &coordinates_ | ||
const Magick::Coordinate& coordinate_ | ||
const std::list<Magick::Coordinate> &coordinates_ | ||
double x_ |
現在点(cpx、cpy)から(x、cpy)まで水平線を描画します。*PathLinetoHorizontalAbs* は絶対座標が提供されることを示し、*PathLinetoHorizontalRel* は相対座標が提供されることを示します。コマンドの最後に、新しい現在点は x の最後の値に対して(x、cpy)になります。 | |
double x_ | ||
double y_ |
現在点(cpx、cpy)から(cpx、y)まで垂直線を描画します。*PathLinetoVerticalAbs* は絶対座標が提供されることを示し、*PathLinetoVerticalRel* は相対座標が提供されることを示します。コマンドの最後に、新しい現在点は y の最後の値に対して(cpx、y)になります。 | |
double y_ |
これら 3 つのグループのコマンドは曲線を描画します。
3 次ベジェ曲線コマンド。 3 次ベジェ曲線セグメントは、始点、終点、および 2 つの制御点によって定義されます。
2 次ベジェ曲線コマンド。 2 次ベジェ曲線セグメントは、始点、終点、および 1 つの制御点によって定義されます。
楕円弧コマンド。 楕円弧セグメントは、楕円の一部を描画します。
3 次ベジェ曲線コマンドは、*PathCurvetoArgs* 引数クラスに依存します。このクラスのコンストラクタシグネチャは次のとおりです。
PathCurvetoArgs( double x1_, double y1_, double x2_, double y2_, double x_, double y_ );
コマンドは次のとおりです。
3 次ベジェ曲線クラス
サブクラス |
コンストラクタシグネチャ |
説明 |
---|---|---|
const Magick::PathCurvetoArgs &args_ |
現在の点から(x,y)まで、曲線の始点における制御点として(x1,y1)を、終点における制御点として(x2,y2)を使用して、3次ベジェ曲線を描画します。 PathCurvetoAbsは絶対座標が続くことを示し、PathCurvetoRelは相対座標が続くことを示します。複数の座標セットを指定してポリベジェを描画することができます。コマンドの最後に、新しい現在の点はポリベジェで使用された最後の(x,y)座標ペアになります。 | |
const std::list<Magick::PathCurvetoArgs> &args_ | ||
const Magick::PathCurvetoArgs &args_ | ||
const std::list<Magick::PathCurvetoArgs> &args_ | ||
const Magick::Coordinate &coordinates_ |
現在の点から(x,y)まで3次ベジェ曲線を描画します。最初の制御点は、現在の点に対して、前のコマンドの2番目の制御点の鏡像であると想定されます。(前のコマンドがない場合、または前のコマンドがPathCurvetoAbs、PathCurvetoRel、PathSmoothCurvetoAbs、またはPathSmoothCurvetoRelでない場合は、最初の制御点は現在の点と一致すると想定されます。)(x2,y2)は2番目の制御点(つまり、曲線の終点にある制御点)です。 PathSmoothCurvetoAbsは絶対座標が続くことを示し、PathSmoothCurvetoRelは相対座標が続くことを示します。複数の座標セットを指定してポリベジェを描画することができます。コマンドの最後に、新しい現在の点はポリベジェで使用された最後の(x,y)座標ペアになります。 | |
const std::list<Magick::Coordinate> &coordinates_ | ||
const Magick::Coordinate &coordinates_ | ||
const std::list<Magick::Coordinate> &coordinates_ |
2次ベジェコマンドは、コンストラクタシグネチャを持つPathQuadraticCurvetoArgs引数クラスに依存します
PathQuadraticCurvetoArgs( double x1_, double y1_, double x_, double y_ );
2次ベジェコマンドは以下のとおりです
2次ベジェ曲線クラス
サブクラス |
コンストラクタシグネチャ |
説明 |
---|---|---|
const Magick::PathQuadraticCurvetoArgs &args_ |
現在の点から(x,y)まで、制御点として(x1,y1)を使用して、2次ベジェ曲線を描画します。 PathQuadraticCurvetoAbsは絶対座標が続くことを示し、PathQuadraticCurvetoRelは相対座標が続くことを示します。複数の座標セットを指定してポリベジェを描画することができます。コマンドの最後に、新しい現在の点はポリベジェで使用された最後の(x,y)座標ペアになります。 | |
const std::list<Magick::PathQuadraticCurvetoArgs> &args_ | ||
const Magick::PathQuadraticCurvetoArgs &args_ | ||
const std::list<Magick::PathQuadraticCurvetoArgs> &args_ | ||
const Magick::Coordinate &coordinate_ |
現在の点から(x,y)まで2次ベジェ曲線を描画します。制御点は、前の | |
const std::list<Magick::Coordinate> &coordinates_ | ||
const Magick::Coordinate &coordinate_ | ||
const std::list<Magick::Coordinate> &coordinates_ |
楕円弧曲線コマンドは、コンストラクタシグネチャを持つPathArcArgs引数クラスに依存します
PathArcArgs( double radiusX_, double radiusY_, double xAxisRotation_, bool largeArcFlag_, bool sweepFlag_, double x_, double y_ );
楕円弧コマンドは以下のとおりです
楕円弧曲線クラス
サブクラス |
コンストラクタシグネチャ |
説明 |
---|---|---|
const Magick::PathArcArgs &coordinates_ |
現在の点から(x, y)まで楕円弧を描画します。楕円のサイズと方向は、2つの半径(radiusX、radiusY)と、楕円全体が現在の座標系に対してどのように回転しているかを示すxAxisRotationによって定義されます。楕円の中心(cx, cy)は、他のパラメータによって課せられる制約を満たすように自動的に計算されます。 largeArcFlagとsweepFlagは自動計算に寄与し、弧の描画方法を決定するのに役立ちます。 largeArcFlagがtrueの場合、利用可能な弧のうち大きい方を描画します。 sweepFlagがtrueの場合、時計回りの回転に一致する弧を描画します。 | |
const std::list<Magick::PathArcArgs> &coordinates_ | ||
const Magick::PathArcArgs &coordinates_ | ||
const std::list<Magick::PathArcArgs> &coordinates_ |