Home > Illustlation > グラフィックツール > Corel Draw > CorelDrawの公式マクロ文書の和訳 > CorelDRAW開発者エリアにようこそ > プログラミング・ガイド > 8-オブジェクト・モデルを理解する > 8.6 - shapeで作業する

8.6 - shapeで作業する

新規作成日 2020-02-25
最終更新日

CorelDRAWでマクロを利用するためのドキュメント「8.6 - Working with shapes」の和訳です。


あらゆる文書は、スケッチ・ツールを使用して、作成される、shape、あるいは、Shapeオブジェクトで構成されています。shapeを移動する、その大きさ変更する、あるいは、それに新しい塗り潰しを与えるような、shapeのプロパティに行われるどんな変更も、オブジェクト・モデルに、すぐに表示されます。

文書ページ上のshapeは、レイヤーに保存されます。それぞれのshapeは、それが表示されるレイヤーのLayer.Shapesコレクションのメンバーです。Layer.Shapesコレクションのshapeが、そのレイヤーに表示される順序で表示されます。-最初のshapeは、「スタック」の最上位にあります。そして、最後のshapeは、一番下にあります。shapeが、追加、並べ替え、または削除された場合、影響を受けたLayer.Shapesコレクションは、そのlayerの新しい形状の順序を反映するために、ただちに更新されます。

加えて、それぞれの文書のページは、そのページのためのすべてのLayer.Shapesコレクションが含まれている、Shapesコレクションを持っています。Page.Shapesコレクションの最初のshapeは、そのページの最上部にあります。そして、最後のshapeは、一番下にあります。

Corel DESIGNERとCorelDRAWは、shapeで作業するために、いくつかのプロパティ、メソッドとイベントを提供します。最も役に立つものを次の表に示します。

  
shapeで作業するためのプロパティ、メソッドとイベントでよく使われるもの
クラス メンバー 説明
AddinHook ShapeCreatedイベント shapeが、作成されたとき、発生します。詳細については、「shapeを作成する」を参照してください。
Application CreateCurveメソッド 「メモリ内」に線や曲線を作成します。詳細については、「線と曲線を作成する」を参照してください。
Application SelectionChangeイベント 選択のアクティブ化が、解除されたとき、発生します。詳細については、「shapeを選択解除する」を参照してください。
Application SymbolLibrariesプロパティ アプリケーションのすべての外部シンボル・ライブラリのコレクションが含まれています。詳細については、「シンボルを作成する」を参照してください。
Color CopyAssignメソッド 1つのshape塗り潰しやshapeの輪郭から、もう一つに色をコピーします。詳細については、「色の操作」を参照してください。
Color Typeメソッド shapeの色の色モデルを指定します。詳細については、「色の操作」を参照してください。
Curve CreateSubPathメソッド 線や曲線に、サブパスを追加します。詳細については、「線と曲線を作成する」を参照してください。
Document ClearSelectionメソッド 文書で、すべてのオブジェクトを選択解除します。詳細については、「shapeを選択解除する」を参照してください。
Document Selectionメソッド 1つのShapeオブジェクトとして、文書内の選択されたすべてのオブジェクトを返します。詳細については、「選択に直接アクセスする」を参照してください。
Document SelectionChangeイベント 選択のアクティブ化が、解除されたとき、発生します。詳細については、「shapeを選択解除する」を参照してください。
Document SelectionRangeプロパティ ShapeRangeオブジェクトとして、文書内の選択されたすべてのオブジェクトを返します。詳細については、「選択のコピーにアクセスする」を参照してください。
Document ShapeChangeイベント shapeが、選択解除されるとき、発生します。詳細については、「shapeを選択解除する」を参照してください。
Document ShapeCreateイベント shapeが、作成されたとき、発生します。詳細については、「shapeを作成する」を参照してください。
Document ShapeDeleteイベント shapeが削除されるとき、発生します。詳細については、「shapeを削除する」を参照してください。
Document ShapeDistortイベント shapeが、歪んだとき、発生します。詳細については、「歪みを適用する」を参照してください。
Document ShapeMoveイベント shapeが、配置されるとき、発生します。詳細については、「shapeを配置する」を参照してください。
Document ShapeTransformイベント shapeが、変換されるとき、発生します。詳細については、「shapeを変換する」を参照してください。
Document SymbolLibraryプロパティ 文書の内部シンボル・ライブラリを返します。詳細については、「シンボルを作成する」を参照してください。
Fill ApplyFountainFillメソッド 噴水塗り潰しをshapeに適用します。詳細については、「噴水塗り潰しを適用する」を参照してください。
Fill ApplyHatchFillメソッド ハッチ塗り潰しをshapeに適用します。詳細については、「ハッチ塗り潰しを適用する」を参照してください。
Fill ApplyPatternFillメソッド パターン塗り潰しをshapeに適用します。詳細については、「パターン塗り潰しを適用する」を参照してください。
Fill ApplyPostScriptFillメソッド PostScript塗り潰しをshapeに適用します。詳細については、「PostScript塗り潰しを適用する」を参照してください。
Fill ApplyTextureFillメソッド テクスチャー塗り潰しをshapeに適用します。詳細については、「テクスチャー塗り潰しを適用する」を参照してください。
Fill ApplyUniformFillメソッド ユニフォーム塗り潰しをshapeに適用します。詳細については、「均一な塗り潰しを適用する」を参照してください。
Fill Fountainプロパティ shapeの噴水塗り潰しプロパティを指定します。詳細については、「噴水塗り潰しを適用する」を参照してください。
Fill Hatchプロパティ shapeのハッチ塗り潰しプロパティを指定します。詳細については、「ハッチ塗り潰しを適用する」を参照してください。
Fill Patternプロパティ shapeのパターン塗り潰しプロパティを指定します。詳細については、「パターン塗り潰しを適用する」を参照してください。
Fill PostScriptFillプロパティ shapeのPostScript塗り潰しプロパティを指定します。詳細については、「PostScript塗り潰しを適用する」を参照してください。
Fill Textureプロパティ shapeのテクスチャー塗り潰しプロパティを指定します。詳細については、「テクスチャー塗り潰しを適用する」を参照してください。
Fill Typeプロパティ shapeに適用される塗り潰しの種類を指定します。詳細については、「shapeに色を付ける」を参照してください。
Fill UniformColorプロパティ shapeの均一な塗り潰しプロパティを指定します。詳細については、「均一な塗り潰しを適用する」を参照してください。
FountainColor Moveメソッド shapeの噴水塗り潰しの色を移動します。詳細については、「噴水塗り潰しを適用する」を参照してください。
FountainColors Addメソッド shapeの噴水塗り潰しに、色を追加します。詳細については、「噴水塗り潰しを適用する」を参照してください。
FountainColors Countプロパティ shapeの噴水塗りの開始色と終了色の間の色数をカウントします。詳細については、「噴水塗り潰しを適用する」を参照してください。
GlobalMacroStorage SelectionChangeイベント 選択のアクティブ化が、解除されたとき、発生します。詳細については、「shapeを選択解除する」を参照してください。
Layer CreateAngularDimensionメソッド 指定したレイヤーに、角度寸法オブジェクトを作成します。(Corel DESIGNERのみ)詳細については、「寸法オブジェクトを作成する」を参照してください。
Layer CreateArtisticTextメソッドやCreateArtisticTextWideメソッド 指定されたレイヤーに、芸術的なテキスト・オブジェクトを作成します。詳細については、「テキスト・オブジェクトを作成する」を参照してください。
Layer CreateCurveメソッド Application.CreateCurveメソッドを使用して、「メモリ内」に作成された直線や曲線を、指定されたレイヤー上に作成します。詳細については、「線と曲線を作成する」を参照してください。
Layer CreateCurveSegmentメソッドやCreateCurveSegment2メソッド 指定されたレイヤに、基本的な曲線を作成します。詳細については、「線と曲線を作成する」を参照してください。
Layer CreateEllipseメソッド、CreateEllipse2メソッドやCreateEllipseRectメソッド 指定のレイヤに、楕円を作成します。詳細については、「楕円を作成する」を参照してください。
Layer CreateLinearDimensionメソッド 指定のレイヤーに、長さ寸法オブジェクトを作成します。(Corel DESIGNERのみ)詳細については、「寸法オブジェクトを作成する」を参照してください。
Layer CreateLineSegmentメソッド 指定のレイヤに、基本的な線を作成します。詳細については、「線と曲線を作成する」を参照してください。
Layer CreateParagraphTextメソッドやCreateParagraphTextWideメソッド 指定のレイヤーに、段落テキスト・オブジェクトを作成します。詳細については、「テキスト・オブジェクトを作成する」を参照してください。
Layer CreateRectangleメソッド、CreateRectangle2メソッドやCreateRectangleRectメソッド 指定のレイヤに、長方形を作成します。詳細については、「長方形を作成する」を参照してください。
Layer Shapesプロパティ レイヤーのshapeのコレクションが含まれています。詳細については、「shapeを選択する」を参照してください。
Outline Colorプロパティ shapeの輪郭線の色を指定します。詳細については、「輪郭線を適用する」を参照してください。
Outline Styleプロパティ shapeの輪郭線の破線設定(つまり、スタイル・プロパティ)を指定します。詳細については、「輪郭線を適用する」を参照してください。
Outline Typeプロパティ 輪郭線がshapeに適用されるかどうか指定します。詳細については、「輪郭線を適用する」を参照してください。
Outline Widthプロパティ 文書単位で、shapeのために輪郭線の幅を指定します。詳細については、「輪郭線を適用する」を参照してください。
Segment AddNodeAtメソッド 線セグメントや曲線セグメントに、ノードを追加します。詳細については、「線と曲線を作成する」を参照してください。
Shape CreateBlendメソッド ブレンド効果をshapeに適用します。詳細については、「ブレンドを適用する」を参照してください。
Shape CreateContourメソッド 等高線効果をshapeに適用します。詳細については、「等高線を適用する」を参照してください。
Shape CreateCustomDistortionメソッド カスタマイズされた歪み効果をshapeに適用します。詳細については、「歪みを適用する」を参照してください。
Shape CreateCustomEffectメソッド カスタマイズされた効果をshapeに適用します。詳細については、「カスタマイズされた効果を適用する」を参照してください。
Shape CreateDropShadowメソッド ドロップ・シャドウ効果をshapeに適用します。詳細については、「ドロップ・シャド
Shape CreateEnvelopeメソッド、CreateEnvelopeFromCurveメソッドやCreateEnvelopeFromShapeメソッド エンベロープ効果効果をshapeに適用します。詳細については、「エンベロプを適用する」を参照してください。
Shape CreateExtrudeメソッド 押し出し効果をshapeに適用します。詳細については、「押し出しを適用する」を参照してください。
Shape CreateLensメソッド レンズ効果をshapeに適用します。詳細については、「レンズを適用する」を参照してください。
Shape CreatePerspectiveメソッド 遠近効果をshapeに適用します。詳細については、「遠近効果を適用する」を参照してください。
Shape CreatePushPullDistortionメソッド プッシュ&プル歪曲効果をshapeに適用します。詳細については、「歪みを適用する」を参照してください。
Shape CreateSelectionメソッド 一つのshapeから選択を作成します。詳細については、「shapeを選択する」を参照してください。
Shape CreateTwisterDistortionメソッド ツイスター歪曲効果をshapeに適用します。詳細については、「歪みを適用する」を参照してください。
Shape CreateZipperDistortionメソッド ジッパー歪曲効果をshapeに適用します。詳細については、「歪みを適用する」を参照してください。
Shape Duplicateメソッド shapeをコピーします。詳細については、「shapeを複製する」を参照してください。
Shape Evaluateメソッド 現在のshapeのプロパティを評価する与えられた式の結果を返します。詳細については、「shapeの検索」を参照してください。
Shape GetBoundingBoxメソッド 境界ボックスのサイズに基づいてshapeの大きさ返します。詳細については、「shapeの大きさを設定する」を参照してください。
Shape GetPositionメソッド shapeの水平および垂直位置を返します。詳細については、「shapeを配置する」を参照してください。
Shape GetSizeメソッド shapeの大きさを返します。詳細については、「shapeの大きさを設定する」を参照してください。
Shape PlaceTextInsideメソッド 選択したテキストを指定した形状内に配置します。詳細については、「テキスト・オブジェクトを作成する」を参照してください。
Shape PositionXプロパティ 図形の水平位置を返す、あるいは、設定します。詳細については、「shapeを配置する」を参照してください。
Shape PositionYプロパティ 図形の垂直位置を返す、あるいは、設定します。詳細については、「shapeを配置する」を参照してください。
Shape Projectメソッド 形状を等角平面に投影します。(Corel DESIGNERのみ)詳細については、「shapeを投影する」を参照してください。
Shape RotateメソッドやRotateExメソッド shapeを回転させます。詳細については、「shapeを回転する」を参照してください。
Shape Selectedメソッド shapeが選択されているかどうか指定します。詳細については、「shapeを選択する」を参照してください。
Shape SetBoundingBoxメソッド 境界ボックスの大きさに基づいてshapeの大きさを設定します。詳細については、「shapeの大きさを設定する」を参照してください。
Shape SetPositionメソッドやSetPositionExメソッド shapeの位置を設定します。詳細については、「shapeを配置する」を参照してください。
Shape SetSizeメソッドやSetSizeExメソッド shapeの大きさを設定します。詳細については、「shapeの大きさを設定する」を参照してください。
Shape SizeHeightプロパティ 図形の高さを返す、あるいは、設定します。詳細については、「shapeの大きさを設定する」を参照してください。
Shape SizeWidthプロパティ 図形の幅を返す、あるいは、設定します。詳細については、「shapeの大きさを設定する」を参照してください。
Shape SkewメソッドやSkewExメソッド shapeを歪める。詳細については、「shapeを歪める」を参照してください。
Shape StretchメソッドやStretchExメソッド shapeを引き伸ばす(またはスケーリングする)詳細については、「shapeを引き伸ばす」を参照してください。
Shape Typeプロパティ shapeの型を返します。詳細については、「shape型を判別する」を参照してください。
ShapeRange CreateSelectionメソッド shapeの範囲から、選択を作成します。詳細については、「shapeを選択する」を参照してください。
ShapeRange Duplicateメソッド shapeの範囲をコピーします。詳細については、「shapeを複製する」を参照してください。
ShapeRange Projectメソッド shapeの範囲を等角平面に投影します。(Corel DESIGNERのみ)詳細については、「shapeを投影する」を参照してください。
Shapes すべてのメソッド 指定されたshapesコレクションから、すべてのshapeを返します。詳細については、「shapeを選択する」を参照してください。
Shapes FindShapeメソッド 指定されたプロパティを持つ一つのshapeを返します。詳細については、「shapeの検索」を参照してください。
Shapes FindShapesメソッド 指定されたプロパティを持つ、すべてのshapeをshape範囲として返します。詳細については、「shapeの検索」を参照してください。
SubPath AppendCurveSegmentメソッドやAppendCurveSegment2メソッド 曲線型のセグメントをサブパスに追加します。詳細については、「線と曲線を作成する」を参照してください。
SubPath AppendLineSegmentメソッド 直線型のセグメントをサブパスに追加します。詳細については、「線と曲線を作成する」を参照してください。
Symbol Definitionプロパティ 記号の定義を返します。詳細については、「シンボルを作成する」を参照してください。
SymbolDefinition NestedSymbolsプロパティ シンボル定義のすべての入れ子になったシンボルのコレクションが含まれています。詳細については、「シンボルを作成する」を参照してください。
SymbolLibrary Symbolsプロパティ シンボル・ライブラリのすべてのシンボル定義のコレクションが含まれています。詳細については、「シンボルを作成する」を参照してください。
TextText FitTextToPathメソッド shapeの輪郭線に、指定された芸術的なテキストを添付します。詳細については、「テキスト・オブジェクトを作成する」を参照してください。
Text Framesプロパティ それぞれが、独自のテキスト範囲(あるいは、TextRangeオブジェクト)を持っている、一連のテキスト・フレーム(あるいは、TextFrameオブジェクト)を表示します。詳細については、「テキスト・オブジェクトを作成する」を参照してください。
Text Storyプロパティ 一連のテキスト・フレーム(あるいは、TextFrameオブジェクト)内のすべてのテキストが含まれているテキスト範囲(あるいは、TextRangeオブジェクト)を表します。詳細については、「テキスト・オブジェクトを作成する」を参照してください。

プロパティ、メソッド、またはイベントの詳細については、APIの文書を参照してください。

このトピックの内容

In this topic

shapeに関連した動作の詳細については、次のサブトピックを参照してください。:

shapeを作成する

Creating shapes

あらゆる文書は、shape、あるいは、Shapeオブジェクトの構成されています。それは、スケッチ・ツールを使用して、作成されます。文書ページ上のshapeは、レイヤーに保存されます。そのため、いろいろなshape作成メソッドは、Layerクラスに属しています。

特定の種類のshapeの作成については、次のサブトピックを参照してください。:

このセクションで説明されていないサポートされたshapeは、ポリゴン(あるいは、Polygonオブジェクト)とカスタマイズしたshape(あるいは、CustomShapeオブジェクト)が含まれています。

カスタマイズされたshapeは、includecallout shape(あるいは、Corel DESIGNERのCalloutShapeオブジェクト)をテーブル(あるいは、TableShapeオブジェクト)サポートしています。

shapeは、文書単位で測定されています。あなたは、Document.Unitプロパティを使用して、文書の測定単位を指定できます(「文書プロパティを設定する」を参照)。

必要に応じて、あなたは、shapeを作成することで、発生するイベントに応答するイベント・ハンドラを使用することができます。:

  • AddinHook.ShapeCreated
  • Document.ShapeCreate

長方形を作成する

Creating rectangles

次のメソッドの1つを使用することで、あなたは、あなたの文書に、長方形(あるいは、Rectangleオブジェクト)を追加することができます。:

  • Layer.CreateRectangle
  • Layer.CreateRectangle2
  • Layer.CreateRectangleRect

これらのメソッドは、新しいShapeオブジェクトに参照を返します。それらは、それらが、取得するパラメータだけが異なるため、あなたは、あなたのマクロ・ソリューションに最適な方法を選択することができます。

あなたは、正方形を作成するために、これらの長方形作成メソッドを使用することもできます。

以下を指定する4つのパラメータを使用して、CreateRectangleメソッドは、長方形を作成します。:

  • 長方形の左、上、右、下の辺の間の距離(この順序で)
  • ページフレームに対応する端

次のVBAの例は、CreateRectangleメソッドを使用して、2" × 1"の長方形を作成します。それは、ページフレームの下から、6"上、そして、ページフレームの左側から、3"に配置されます。:

Dim sh As Shape

ActiveDocument.Unit = cdrInch

Set sh = ActiveLayer.CreateRectangle(3, 7, 6, 5)

CreateRectangle2メソッドは、その左下角、幅と高さの座標に基づいて、長方形を作成します。

次のVBAの例は、CreateRectangle2メソッドを使用して、前の例と同じ長方形を作成します。:

Dim sh As Shape

ActiveDocument.Unit = cdrInch

Set sh = ActiveLayer.CreateRectangle2(3, 6, 2, 1)

最後に、CreateRectangleRectメソッドは、その境界ボックス(あるいは、Rectオブジェクト)に基づいて長方形を作成します。

これらの3つの長方形作成メソッドは、角の丸みを指定するためのオプションのパラメーターを提供します。

CreateRectangleメソッドは、左上、右上、左下と右下角のパラメータ(その順序で)を使用して、角の丸みを指定します。これらのパラメータは、最も短い側の半分の長さの全体のパーセンテージ数として、四隅の半径を定義する(デフォルト0~100の範囲の)整数値をとります。

次のVBAの例は、前の例から、2"×1"の長方形を再作成します。しかしながら、この時、四隅の半径は、最も短い側の長さの半分の100%、75%、50%と0%に設定されます。(つまり、0.5"、0.375"、0.25"と尖端):

Dim sh As Shape

ActiveDocument.Unit = cdrInch

Set sh = ActiveLayer.CreateRectangle(3, 7, 6, 5, 100, 75, 50, 0)

CreateRectangle2メソッドとCreateRectangleRectメソッドは、CreateRectangleメソッドと同じ順序で、角半径を定義します。(つまり、左上、右上、左下と右下)。しかしながら、 CreateRectangle2とCreateRectangleRectは、角半径を文書単位で測定し、double(浮動小数点)値を取ります。

CreateRectangle2やCreateRectangleRectを使用するとき、あなたは、角半径の大きさを長方形で最も短い側の長さの半分より少なく、制限する必要があります。

次のVBAの例は、CreateRectangle2メソッドを使用して、前の例と同じ丸い角を持つ長方形を作成します。:

Dim sh As Shape

ActiveDocument.Unit = cdrInch

ActiveDocument.ReferencePoint = cdrBottomLeft

Set sh = ActiveLayer.CreateRectangle2(3, 6, 2, 1, 0.5, 0.375, 0.25, _

0)

楕円を作成する

Creating ellipses

次のメソッドの1つを使用することで、あなたは、あなたの文書に、楕円(あるいは、Ellipseオブジェクト)を追加することができます。:

  • Layer.CreateEllipse
  • Layer.CreateEllipse2
  • Layer.CreateEllipseRect

これらのメソッドは、新しいShapeオブジェクトに参照を返します。それらは、それらが、取得するパラメータだけが異なるため、あなたは、あなたのマクロ・ソリューションに最適な方法を選択することができます。

あなたは、円、円弧とパイ形状を作成するために、楕円作成メソッドを使用することもできます。

CreateEllipseメソッドは、以下を指定する4つのパラメータを使用して、楕円を作成します。:

  • 楕円の左、上、右、下の辺の間の距離(この順序で)
  • ページフレームに対応する端

次のVBAの例は、50ミリメートルの円を作成します。:

Dim sh As Shape

ActiveDocument.Unit = cdrMillimeter

Set sh = ActiveLayer.CreateEllipse(75, 150, 125, 100)

CreateEllipse2メソッドは、中心、水平半径、垂直半径に基づいて、楕円を作成します。(半径が、1つだけ指定されている場合、円が、作成されます。)

次のVBAの例は、CreateEllipse2メソッドを使用して、楕円を作成します。:

Dim sh As Shape

ActiveDocument.Unit = cdrMillimeter

Set sh = ActiveLayer.CreateEllipse2(100, 125, 50, 25)

次のVBAの例は、CreateEllipse2メソッドを使用して、CreateEllipse例と同じ50ミリメートルの円を作成します。:

Dim sh As Shape

ActiveDocument.Unit = cdrMillimeter

Set sh = ActiveLayer.CreateEllipse2(100, 125, 25)

最後に、CreateEllipseRectメソッドは、その境界ボックス(あるいは、Rectオブジェクト)に基づいて、楕円を作成します。

これらの3つの楕円作成メソッドは、円弧やパイ形状を作成するための3つのオプション・パラメータを提供します。ページ上の水平の右側がゼロとして測定され、そして、ゼロから反時計回りに移動する角度が、正の値で測定されるdouble値のStartAngleとEndAngleパラメータは、shapeの開始角度と終了角度を(それぞれ)定義するために使用されます。加えて、Pieパラメータ-は、Boolean値であり、shapeが、円弧(False)か、パイ形状(True)かを定義します。

次のVBAコードは、CreateEllipseメソッドを使用して、"C"の形状を作成します。:

Dim sh As Shape
ActiveDocument.Unit = cdrMillimeter
Set sh = ActiveLayer.CreateEllipse(75, 150, 125, 100, 60, 290, False)

線と曲線を作成する

Creating lines and curves

あなたは、あなたの文書に、線と曲線(あるいは、Curveオブジェクト)を追加することができます。線や曲線を作成するために、あなたは、まず、Application.CreateCurveメソッドを使用して、"メモリ内"で、Curveオブジェクトを作成する必要があります。

それぞれのCurveオブジェクトは、少なくとも1つのサブパス(あるいは、SubPathオブジェクト)を持っています。あなたは、Curve.CreateSubPathメソッドを使用して、線や曲線にサブパスを追加できます。

それぞれのSubPathオブジェクトは、直線型や曲線型にすることができる、少なくとも1つのセグメント(あるいは、Segmentオブジェクト)を持っています。あなたは、SubPath.AppendLineSegmentメソッドを使用して、サブパスの末尾に直線型のセグメントを追加できます。;あなたは、SubPath.AppendCurveSegmentメソッドやSubPath.AppendCurveSegment2メソッドを使用して、曲線型のセグメントを追加できます。

SubPath.AppendLineSegmentメソッドは、新しいセグメントの末尾を定義する、1組の直交座標を必要とします。

SubPath.AppendCurveSegmentメソッドは、新しいセグメントの末尾を定義する、1組の直交座標を必要とします。オプションとして、あなたが、セグメントの先端と末尾のコントロール・ハンドルの長さと角度を定義する場合、あなたは、2組の極座標を指定できます。

SubPath.AppendCurveSegment2メソッドには、3組のCartesian座標が必要です。:1つは、新しいセグメントの終端を定義します。そして、2つは、セグメントの先端と末尾のコントロール・ハンドルの位置を定義します。

あなたは、セグメント作成メソッドのAppendAtBeginningパラメーターをTrueに設定することで、サブパスの先端にセグメントを追加できます。

最後に、それぞれのSegmentは、少なくとも1つのノード(あるいは、Nodeオブジェクト)を持っています。あなたは、Segment.AddNodeAtメソッドを使用して、セグメントにノードを追加することができます。

あなたは、ClosedプロパティをTrueに設定することで、Curveオブジェクトを閉じることができます。

"メモリ内"で、曲線を作成した後、あなたは、Layer.CreateCurveメソッドを使用して、それをレイヤーに適用することができます。新しいShapeオブジェクトへの参照が返されます。

次のVBAコードは、閉じたD字曲線を作成します。:

Dim sh As Shape, spath As SubPath, crv As Curve

ActiveDocument.Unit = cdrCentimeter

Set crv = Application.CreateCurve(ActiveDocument)

'Create Curve object

Set spath = crv.CreateSubPath(6, 6) ' Create a SubPath

spath.AppendLineSegment 6, 3 ' Add the short vertical segment

spath.AppendCurveSegment 3, 0, 2, 270, 2, 0 ' Lower curve

spath.AppendLineSegment 0, 0 ' Bottom straight edge

spath.AppendLineSegment 0, 9 ' Left straight edge

spath.AppendLineSegment 3, 9 ' Top straight edge

spath.AppendCurveSegment 6, 6, 2, 0, 2, 90 ' Upper curve

spath.Closed = True ' Close the curve

Set sh = ActiveLayer.CreateCurve(crv) ' Create curve shape

Layerクラスは、一つのサブパスに、一つのセグメントを持つ、基本的な直線や基本的な曲線を作成するためのショートカットとして機能する、3つの追加のメソッドを提供します。:

  • Layer.CreateLineSegment-指定された開始点と終了点に基づいて、基本的な線を作成します。
  • Layer.CreateCurveSegment-指定された開始点と終了点に基づいて、基本的な曲線を作成します。そして、オプションとして、曲線の先端と末尾のコントロール・ハンドルの長さと角度
  • Layer.CreateCurveSegment-指定された開始点と終了点に基づいて、基本的な曲線を作成します。オプションとして、曲線の先端と末尾のコントロール・ハンドルの長さと角度

これらの3つのメソッドは、新しいshapeオブジェクトに参照を返します。

テキスト・オブジェクトを作成する

Creating text objects

あなたは、あなたの文書に、テキスト(あるいは、Textオブジェクト)を追加することができます。2種類のテキストが、サポートされています:芸術的なテキストと段落テキスト。芸術的なテキスト・オブジェクトは、あなたが、グラフィック効果を適用することができる短いテキスト行です。対照的に、段落テキスト・オブジェクトは、大きなテキストブロックです。-"frame"と呼ばれる長方形のコンテナに保存されます。-あなたは、より複雑な書式設定を適用できます。

芸術的なテキスト・オブジェクトを作成するために、あなたは、次のいずれかの方法を使用できます。:

  • Layer.CreateArtisticText-基本的な芸術的なテキストを作成します
  • Layer.CreateArtisticTextWide-Unicode形式で、芸術的なテキストを作成します

これらのメソッドの両方とも、位置とartistic-textオブジェクトのコンテンツを指定する必要があります。オプションとして、フォント・スタイル、フォント・サイズ、書式設定とアライメントとして、テキスト属性のような、これらのメソッドは、あなたが、両方とも設定できます。加えて、これらのメソッドの両方は、新しいShapeオブジェクトに参照を返します。

次のVBAコードは、"Hello World"という単語を指定された位置に配置する、基本的なartistic-textオブジェクトを作成するために、CreateArtisticTextメソッドを使用します。:

Dim sh As Shape

ActiveDocument.Unit = cdrInch

Set sh = ActiveLayer.CreateArtisticText(1, 4, "Hello World")

あなたは、テキストが、その形状のパスに沿って流れるような、単純に、shapeの輪郭線に、テキストを添付する、Text.FitTextToPathメソッドを使用して、芸術的なテキストをパスに組み込むことができます。

次のVBAコードは、新しいartistic-textオブジェクトを作成して、選択されたshapeにそれを添付します。:

Dim sh As Shape, sPath As Shape

ActiveDocument.Unit = cdrInch

Set sPath = ActiveShape

Set sh = ActiveLayer.CreateArtisticText(1, 4, "Hello World")

sh.Text.FitToPath sPath

段落テキスト・オブジェクトを作成するために、あなたは、次のいずれかの方法を使用できます。:

  • Layer.CreateParagraphText-基本的な段落テキストを作成します
  • Layer.CreateParagraphTextWide-Unicode形式で、段落テキストを作成します

これら両方のメソッドは、あなたに、位置をページフレームの左、上、右、下から(この順序で)設定することで、段落テキスト・フレームの大きさを指定することを、要求します。オプションとして、これらのメソッドの両方は、あなたが、目的のテキストを指定して、設定できます。フォント・スタイル、フォント・サイズ、書式設定とアライメントとして、テキスト属性のような、加えて、これらのメソッドの両方は、新しいShapeオブジェクトに参照を返します。

次のVBAコードは、指定した大きさのフレームに"Hi There"という単語を配置する、基本的な段落テキスト・オブジェクトを作成するために、CreateParagraphTextメソッドを使用します。:

Dim sh As Shape

ActiveDocument.Unit = cdrInch

Set sh = ActiveLayer.CreateParagraphText(1, 4, 5, 2, "Hi There", _

Alignment := cdrCenterAlignment)

あなたは、テキスト範囲(あるは、TextRangeオブジェクト)を使用して、既存の段落テキストをフォーマットできます。テキスト範囲は、両方ともフレーム(または、TextFrameオブジェクト)を含まれる、2つの方法で取り扱われます。:

  • "frames"メソッド-Text.Framesプロパティは、それぞれがそれ自身のテキスト範囲を持つ、一連のテキスト・フレームを表示します。
  • "story"メソッド-Text.Storyプロパティは、一連のテキスト・フレームのすべてのテキストが含まれている、テキスト範囲を表示します。

テキスト・プロパティの変更のような、(フォント・スタイルとフォント・サイズのような)一つのテキストブロックとして扱うことができるテキスト範囲は、そのテキスト範囲ですべてのテキストに適用されます。別の方法では、テキスト範囲は、次のより小さなテキスト範囲に分類できます。:

  • columns(あるいは、TextColumnsオブジェクト)
  • paragraphs(あるいは、TextParagraphsオブジェクト)
  • lines(あるいは、TextLinesオブジェクト)
  • words(あるいは、TextWordsオブジェクト)
  • characters(あるいは、TextCharactersオブジェクト)

オブジェクト・モデルは、アプリケーションによって提供される、すべての段落書式オプションと文字書式オプションをサポートしています。

次のVBAコードは、指定したテキスト範囲の書式を設定します。Text.Storyプロパティを使用して、 物語の最初の段落は、見出しスタイルに変更されます。そして、2番目と3番目の段落は、本文テキスト・スタイルに変更されます。:

Dim txt As TextRange

' Format the first paragraph
' 最初の段落の書式を設定します

Set txt = ActiveShape.Text.Story.Paragraphs(1)

txt.ChangeCase cdrTextUpperCase

txt.Font = "Verdana"

txt.Size = 18

txt.Bold = True

' Format the second and third paragraphs
' 2番目と3番目の段落の書式を設定します

Set txt = ActiveShape.Text.Story.Paragraphs(2, 2)

txt.Font = "Times New Roman"

txt.Size = 12

txt.Style = cdrNormalFontStyle

あなたは、Shape.PlaceTextInsideメソッドを使用して、選択したテキストを閉じた図形内に配置できます。

次のVBAコードは、5"×2"の楕円を作成します。そして、その中に、選択したテキストを配置します:

Dim txt As Shape, sh As Shape

ActiveDocument.Unit = cdrInch

Set txt = ActiveShape

Set sh = ActiveLayer.CreateEllipse(0, 2, 5, 0)

sh.PlaceTextInside txt

寸法オブジェクトを作成する

Creating dimension objects

あなたは、あなたのCorel DESIGNER文書に、寸法オブジェクト(あるいは、Dimensionオブジェクト)を追加することができます。Dimensionオブジェクトを使用すると、図形の大きさや複数の図形間の距離や角度を表示できます。テクニカル・イラストレーションとコンピューター支援設計(CAD)の両方で広く使用されています。

寸法オブジェクトは、2つの部分から構成されています:

  • 測定する領域を線分または角度で区切る線
  • 寸法線の寸法を表示するテキスト

Corel DESIGNERは、長さ寸法オブジェクト(あるいは、DimensionLinearオブジェクト)と角度寸法オブジェクト(あるいは、DimensionAngularオブジェクト)の両方をサポートしています。あなたは、次のメソッドを使用して、寸法オブジェクトを作成することができます。:

  • Layer.CreateLinearDimension-長さ寸法オブジェクトを作成します。
  • Layer.CreateAngularDimension-角度寸法オブジェクトを作成します。

寸法オブジェクトのプロパティは、作成と同時に設定さます。しかしながら、あなたは、対応するDimensionLinearオブジェクトやDimensionAngularオブジェクトのさまざまなプロパティにアクセスすることで、これらのプロパティを、いつでも調整できます。

あなたは、その寸法線ように、寸法オブジェクトを、その対象となるshapeにリンクすることができます。そして、shapeが操作されると、その測定値が更新されます。リンクされた寸法オブジェクトを作成するために、あなたは、寸法線の終点をターゲット形状のスナップ点に割り当てる必要があります。

次のVBAの例は、リンクされた寸法オブジェクトの概念を示します。長さ寸法オブジェクトと角度寸法オブジェクトが、作成されます。続いて、指定された長方形にリンクされます。長方形が移動される場合、寸法線は、スナップ点に「付着」し続けます。;長方形が、大きさを変更される場合、それに応じて、寸法測定値が、変化します。

Sub Example1()

    Dim shp1 As Shape, shp2 As Shape, shp3 As Shape

    Dim Vertex As New SnapPoint

    ' Create a rectangle
    ' 長方形を作成します

    Application.Unit = cdrInch

    ActiveDocument.Unit = cdrInch

    Set shp1 = ActiveLayer.CreateRectangle2(0, 0, 5, 2.5)

    ' Create a linear dimension that is linked to snap points of the

    ' rectangle and get a reference to the Dimension object
     ' 長方形のスナップ点にリンクされている長さ寸法を作成します。
    ' そして、寸法オブジェクトに参照を取得します。

    Set shp2 = _

    ActiveLayer.CreateLinearDimension(cdrDimensionVertical, _

    shp1.SnapPoints(2), shp1.SnapPoints(3), TextX:=2)

    ' Modify the properties of the dimension object
     ' 寸法オブジェクトのプロパティを変更します

    With shp2.Dimension

        'Set the dimension's units to inches and display them
        ' 寸法の単位をインチに設定して表示します

        .Linear.Units = cdrInch
        .Linear.ShowUnits = True
        
    End With

    ' Create an angular dimension on the rectangle's other snap points
     ' 長方形の他のスナップ点で、角度寸法を作成します

    ' and set its properties at creation time
    ' そして、作成時に、プロパティを設定します

    Vertex.PositionX = ActiveDocument.DrawingOriginX - 2

    Vertex.PositionY = ActiveDocument.DrawingOriginY

    Set shp3 = ActiveLayer.CreateAngularDimension(Vertex, _

    shp1.SnapPoints(2), shp1.SnapPoints(3), 0, 0, _

    Precision:=3, ShowUnits:=True, _

    Units:=cdrDimensionUnitDegrees, OutlineWidth:=0.014, _

    Arrows:=ArrowHeads(1), TextSize:=10)

End Sub

別の方法では、あなたは、どの形状にもリンクされていない、静的寸法オブジェクトを作成することができます。その寸法線ように、そして、文書内の形状が操作されても、その測定値は変わりません。静的寸法オブジェクトを作成するために、あなたは、レイヤー上に、自由スナップ点を作成する必要があります。続いて、これらのスナップ点に、寸法線を添付します。

次のVBAの例は、静的寸法オブジェクトの概念を示します。寸法オブジェクトは、どの形状にもリンクされていません、そのため、それは、静的距離を測定します。寸法オブジェクトの測定値を変更する寸法線のために、自由スナップ点の場所だけを変更します。

Sub Example2()

    Dim Shape1 As Shape

    Dim Snap1 As New SnapPoint, Snap2 As New SnapPoint

    'Initialize the snap points on the canvas
    ' キャンバス上のスナップ点を初期化します

    Snap1.PositionX = 0

    Snap1.PositionY = 0

    Snap2.PositionX = 0

    Snap2.PositionY = 10

    'Create a linear dimension linked to the rectangle's snap points
    ' 長方形のスナップ点に、リンクした長さ寸法を作成します。

    'and get a reference to the dimension object
     ' そして、寸法オブジェクトに参照を取得します。

    Set Shape1 = _

    ActiveLayer.CreateLinearDimension(cdrDimensionVertical, _

    Snap1, Snap2)

    ' Modify the dimension object's properties
    ' 寸法オブジェクトのプロパティを変更します

    With Shape1.Dimension

        'Set the dimension's units to inches and display them
         ' 寸法の単位をインチに設定して表示します

        .Linear.Units = cdrInch
        .Linear.ShowUnits = True

    End With

End Sub

記号を作成する

Creating symbols

記号(あるいは、Symbolオブジェクト)は、シンボル・ライブラリで定義されている、再使用できるグラッフィク要素です。あなたの文書でシンボルを使用すると、次の利点があります。:

  • 小さいファイルサイズ-文書に表示される実際のシンボルの数に関係なく、それぞれのシンボルは一度だけ定義されます。
  • 生産性の向上-シンボル定義に加えられた変更は、文書内のシンボルのすべてのインスタンスに自動的に伝えられます。
  • 改善された仕事の流れ-シンボル・ライブラリは、保存するのに便利な方法です。そして、一般的なグラフィック要素を再利用します。

シンボル・ライブラリには、2つの種類があります。:外部と内部。

外部シンボル・ライブラリは、ファイル名拡張子CSLを使用します。そして、アプリケーション・レベルで、手動で、ワークスペースに追加する必要がある、シンボル定義が含まれています。あなたは、関連外部のライブラリ(CSL)ファイルを開かない限り、それは、外部ライブラリで定義されるシンボルを変更することができません。;ライブラリとしてファイルをインポートするだけでは、あなたが、その内容を変更できません。

外部のシンボル・ライブラリは、すべてのユーザーが、アクセスできる場所に公開される必要があります。共通のマップされたドライブは、良い解決策ですが、企業のイントラネットの方が、優れています。しかしながら、シンボルのセキュリティが、重要でない場合、最高のソリューションは、企業のインターネット・サイトです。

内部シンボル・ライブラリが、文書レベルに存在します。文書で新しいシンボルを定義します。-あるいは、文書に、外部ライブラリ・シンボルのインスタンスを追加します。-自動的に、その文書の内部のライブラリに、そのシンボルを追加します。このために、それぞれの文書には、固有の内部シンボル・ライブラリがあります。

外部のシンボル・ライブラリから、シンボルのインスタンスを挿入することは、その外部シンボル・ライブラリで、そのシンボルのために定義にリンクを作成します。いずれかの時点で、文書は、外部のシンボル・ライブラリにアクセスできない場合、その文書の内部のシンボル・ライブラリのシンボル定義は、その代わりに使用されます。

Application.SymbolLibrariesプロパティには、アプリケーションに利用できる、すべての外部のシンボル・ライブラリ(またはSymbolLibraryオブジェクト)のコレクションが含まれています。Document.SymbolLibraryプロパティは、その文書の内部のシンボル・ライブラリだけを返します。

SymbolLibrary.Symbolsプロパティには、そのシンボル・ライブラリのすべてのシンボル定義(あるいは、SymbolDefinitionオブジェクト)のコレクションが含まれています。Symbol.Definitionプロパティによって、SymbolDefinitionオブジェクトも返されます。;この理由から、あなたは、SymbolDefinitionクラスのいろいろなプロパティとメソッドを使用することにより、シンボルの定義を変更できます。

文書の内部のシンボル・ライブラリからシンボル定義を削除するために、あなたは、文書から、シンボルのすべてのインスタンスを削除する必要があります。続いて、SymbolLibrary.PurgeUnusedSymbolsメソッドを実行します。簡単に、シンボルのすべてのインスタンスを削除します。文書から、自動的に、その文書の内部シンボル・ライブラリから、シンボル定義を削除しません。

次のVBAコードは、シンボルを使用するための基本をデモンストレーションします。:

Sub AddRemoveSymbols()

    Dim objSymLibSwitchA As SymbolLibrary

    Dim shpSymBreaker2 As Shape, shpSymBreaker2A As Shape

    ActiveDocument.Unit = cdrMillimeter

    'Add the switchesA external symbol library to the global

    'workspace.
   ' switchesA外部シンボル・ライブラリを、グローバル・ワークスペースに追加します。

    Set objSymLibSwitchA = SymbolLibraries.Add _

    ("C:\libs\switches\switchesA.csl")

    'Add the breaker2 symbol to the active layer.
    ' breaker2シンボルを、アクティブ・レイヤーに追加します。

    'NOTE: This automatically adds the symbol definition to the

    'internal symbol library for the document.
    ' 注記:これは、自動的に、文書の内部シンボル・ライブラリに、シンボル定義を追加します。

    Set shpSymBreaker2 = ActiveLayer.CreateSymbol(15, 20, _

    "breaker2", SymbolLibraries("switchesA"))

    'Add another instance of the breaker2 symbol, this time from the

    'internal symbol library. NOTE: We did not specify a library, so

    'the library for the local document is used by default.
    ' 今回は、内部シンボル・ライブラリから、breaker2シンボルの他のインスタンスを追加します。
    ' 注記:私たちは、ライブラリを指定しませんでした。
    ' そのため、デフォルトでは、ローカル文書のライブラリが使用されます。

    Set shpSymBreaker2A = ActiveLayer.CreateSymbol(30, 20, _

    "breaker2")

    'Remove the switchesA library from the global workspace.
    ' switchesAライブラリをグローバル・ワークスペースから削除します。

    SymbolLibraries("switchesA").Delete

    'Delete the two breaker2 symbols.
    ' 2つのbreaker2シンボルを削除します。

    shpSymBreaker2.Delete

    shpSymBreaker2A.Delete

    'At this point, the internal symbol library for the document

    'still has the definition of breaker2 stored. To remove this

    'definition, we must purge the unused symbols from the library.

    'The definition is unused because there are no instances that

    'reference it.
    ' ここでは、文書の内部シンボル・ライブラリは、依然として、breaker2の定義が保存されています。
    ' この定義を削除するために、
    ' 私たちは、ライブラリから、使用していないシンボルを削除する必要があります。
     ' 定義は、それを参照するインスタンスがないため、未使用です。

    ActiveDocument.SymbolLibrary.PurgeUnusedSymbols

End Sub

シンボルには、他のシンボルを含める(あるいは、"nest")ことができます。トップレベルのシンボルには、シンボルを含めることができます。そして、それぞれのこれらのシンボルには、シンボルなどを含めることができます。オブジェクト・モデルでは、SymbolDefinition.NestedSymbolsプロパティは、シンボル定義のネストされたシンボルのコレクションを(SymbolDefinitionsオブジェクトとして)返します。作成できるネスト・レベルの数に制限はありませんが、シンボルは、そのシンボル定義(外部や内部)にアクセスせずに、レンダリングできません。加えて、シンボルの最初と2番目のネスト・レイヤーが、正しくレンダリングされても、必要なシンボル定義へのアクセスすることなく、3番目のネスト・レイヤーのシンボルが、正しくレンダリングされない場合があります。

シンボルと入れ子になったシンボル:

シンボルと入れ子になったシンボル:

次のVBAコードは、入れ子になったシンボルを使用するための基本をデモンストレーションします。:

Sub MakeNestedSymbol()

    Dim shp1 As Shape, shp2 As Shape, shp3 As Shape, shpSym As Shape

    Dim shpRng As New ShapeRange

    'Create a pair of rectangles and a circle.
    ' 長方形のペアと円を作成します。

    Set shp1 = ActiveLayer.CreateRectangle2(0, 0, 10, 20)

    Set shp2 = ActiveLayer.CreateRectangle2(50, 50, 20 ,10)

    Set shp3 = ActiveLayer.CreateEllipse(10, 10, 20)

    'Make a symbol out of the circle. NOTE: This circle is

    'automatically added to the internal symbol library for the

    'document.
    ' 円からシンボルを作成します。
    ' 注記:この円は、自動的に、文書の内部のシンボル・ライブラリに追加されます。

    Set shpSym = shp3.ConvertToSymbol("circle")

    'Add the rectangles and the circle symbol to a shape range.
    ' 長方形と円のシンボルを、shape範囲に追加します。

    shpRng.Add shp1

    shpRng.Add shp2

    shpRng.Add shpSym

    'Convert the shape range into a symbol. NOTE: This symbol is

    'added to the internal symbol library for the document. It is

    'also is a nested symbol because it contains the symbol circle.
    ' shape範囲を、シンボルに変換します。
    ' 注記:この合成投入は、文書の内部の合成投入ライブラリに追加されます。
    ' また、それには、シンボルの円が含まれているため、ネストされたシンボルです。

    shpRng.ConvertToSymbol "shapes"

End Sub

shape型を検出する

Determining shape type

それぞれのShapeオブジェクトは、shape型を返す読み込み専用のTypeプロパティを持っています。(たとえば、長方形、楕円、曲線、テキストまたはグループ)。shapeが利用できるプロパティとメソッドは、shape型によって異なります;この理由から、そのshapeに、プロパティやメソッドを適用する前に、shape型を決定することをお勧めします。

次のサンプルVBAコードは、shapeがテキストであるかどうか決定します。shapeが、テキストである場合、コードは、それが芸術的テキストや段落テキストかを決定します。shapeが、芸術的なテキストである場合、それは、10度回転します。

Dim sh As Shape

Set sh = ActiveShape

If sh.Type = cdrTextShape Then

    If sh.Text.IsArtisticText = True Then
        sh.Rotate 10
    End If

End If

shapeを選択する

Selecting shapes

それぞれのshapeは、それが表示されるレイヤーのLayer.Shapesコレクションのメンバーです。Layer.Shapesコレクションのshapeが、そのレイヤーに表示される順序で表示されます。-最初のshapeは、「スタック」の最上位にあります。そして、最後のshapeは、一番下にあります。

shapeが、追加、並べ替え、または削除された場合、影響を受けたLayer.Shapesコレクションは、そのlayerの新しい形状の順序を反映するために、ただちに更新されます。

加えて、それぞれの文書のページは、そのページのためのすべてのLayer.Shapesコレクションが含まれている、Shapesコレクションを持っています。Page.Shapesコレクションの最初のshapeは、そのページの最上部にあり、最後のshapeは、一番下にあります。

あなたが、それぞれのshapeにアクセスしたい場合、あなたは、それらを選択できます。あなたが、shapeを選択するとき、あなたは、それらのshapeだけを含む"selection"を作成します。

Shape.Selectedプロパティは、shapeが選択されるかどうか示すBoolean値を取ります。:shapeが選択されている場合は、True、それ以外の場合には、Falseです。Selectedプロパティの値を、Trueに変更することによって、あなたは、shapeを選択できます。;この手法は、現在の選択にshapeを追加します。-つまり、新しい選択を作成するのではなく、そのshapeだけが含まれています。

あなたが、shapeから新しい選択を作成したい場合、つまり、次のVBAの例のように、指定されたshapeを選択し、他の選択されたshapeの選択を解除することで、あなたは、Shape.CreateSelectionメソッドを使用することができます。:

Dim sh As Shape

Set sh = ActivePage.Shapes(1)

If sh.Selected = False Then sh.CreateSelection

あなたは、ShapeRange.CreateSelectionメソッドを使用して、複数のshapeを選択できます。次のVBAコードは、アクティブ・ページ上で、(ロック、あるいは、非表示のレイヤー上のものを除いて)すべてのshapeを選択するために、Shapes.Allメソッドと組み合わせて、このメソッドを使用します。:

ActivePage.Shapes.All.CreateSelection

あなたは、2つの方法のいずれかで、選択にアクセスすることができます。:

  • 特別なShapeオブジェクトを返すために、実際の選択が含まれているDocument.Selectionメソッドを使用します。選択が更新されるとき、このShapeオブジェクトは、自動的に更新されます。
  • 選択のコピーが含まれているShapeRangeオブジェクトを返すために、Document.SelectionRangeプロパティを使用します。このShapeRangeオブジェクトは、(その時にShapeRangeオブジェクトが、作成されたときの)選択の「スナップショット」を表示するため、それは、選択が更新されるとき、自動的に更新されません。

要約すると、あなたは、直接、選択にアクセスできます。あるいは、あなたは、その選択のコピーにアクセスすることができます。;別の方法では、あなたは、選択内のshapeのサブセットにアクセスできます。あなたは、選択範囲内のshapeを再び並び替えることもできます。あなたが、選択をもはや必要としないとき、あなたは、1つやそのshapeの全ての選択を解除することができます。

図形の選択の詳細については、次のサブトピックを参照してください。:

直接、選択にアクセスする

Accessing selections directly

既に説明したように、あなたは、直接、選択の内容にアクセスするために、Document.Selectionメソッドを使用することができます。Shapeオブジェクトが、返されます。そして、このShapeオブジェクトは、選択に対する変更を反映するために更新されます。

次のVBAコードは、アクティブ文書のために選択を返します。:

Dim sel As Shape

Set sel = ActiveDocument.Selection

ActiveDocument.Selectionのショートカットは、サブタイプcdrSelectionShapeのShapeオブジェクトを返すActiveSelectionです。Shapeサブタイプは、Shapesと呼ばれるメンバー・コレクションを持っています。それは、文書内のすべての選択されたshapeのコレクションを表します。以下のVBAの例のように、ActiveSelection.Shapesコレクションのshapeは、アクセスできます。:

Dim sh As Shape, shs As Shapes

Set shs = ActiveSelection.Shapes

For Each sh In shs
    sh.Rotate 15 'Rotate each shape by 15 degrees counterclockwise
                              ' それぞれのshapeを反時計回りに15度回転します。
Next sh

あなたが、ActiveSelectionコマンドを使用して図形を選択した後、あなたは、その後、それらのshapeにアクセスするために、コマンドを使用することができません。そのかわりに、あなたは、次のメソッドの1つを使用して、選択のコピーを作成する必要があります。:

  • Shapeオブジェクトの配列として選択を再作成します。
  • Shapesコレクションとして選択を再作成します。
  • 選択範囲の「スナップショット」をShapeRangeオブジェクトとして作成します。(「選択のコピーにアクセスする」を参照)。

既に説明したように、あなたは、選択内で、shapeのコピーを作成するために、Document.SelectionRangeプロパティを使用することができます。しかしながら、選択が更新されるとき、返されたShapeRangeオブジェクトは、更新されません。なぜなら、ShapeRangeオブジェクトが、作成されたとき、現在の選択の「スナップショット」を表します。

既に説明したように、あなたは、選択内で、shapeのコピーを作成するために、Document.SelectionRangeプロパティを使用することができます。しかしながら、選択が更新されるとき、返されたShapeRangeオブジェクトは、更新されません。なぜなら、ShapeRangeオブジェクトが、作成されたとき、現在の選択の「スナップショット」を表します。

次のVBAコードは、アクティブ文書の選択のコピーを返します。:

Dim selRange As ShapeRange

Set selRange = ActiveDocument.SelectionRange

ActiveDocument.SelectionRangeコマンドのショートカットは、ShapeRangeオブジェクトを返すActiveSelectionRangeです。プロパティが呼び出されたとき、このオブジェクトは、現在、選択されている、shapeへの参照のコレクションが含まれています。次のVBAの例のように、ActiveSelectionRangeコレクションのshapeにアクセスできます。:

Dim sh As Shape, shRange As ShapeRange

Set shRange = ActiveSelectionRange

For Each sh In shRange
    sh.Skew 15 ' Skew each shape thru 15° counterclockwise
                          ' それぞれの形状を反時計回りに15°歪曲します。
Next sh

あなたが、現在の文書の選択のコピーを作成するために、ActiveSelectionRangeコマンドを使用した後、あなたは、その後、そのどのshapeにでもアクセスするために、返されたShapeRangeオブジェクトにアクセスできます。あなたは、shapeを追加することもできます。あるいは、shapeを返されたShapeRangeオブジェクトから削除します。あなたが、変更されたShapeRangeオブジェクトで、現在の選択を置き換えたい場合、あなたは、続いて、ShapeRange.CreateSelectionメソッドを使用できます。

次のVBAコードは、現在の文書の選択から、ShapeRangeオブジェクトを作成します。そのshape範囲から1番目と2番目の形状を削除します。続いて、元の選択を、この変更されたShapeRangeオブジェクトに置き換えます。:

Dim shRange As ShapeRange

Set shRange = ActiveSelectionRange

shRange.Remove 1

shRange.Remove 2

shRange.CreateSelection

あなたが、指定されたShapeRangeオブジェクトを、現在の選択に追加したい場合、(現在の選択を置き換えるために、それを使用するよりも)、あなたは、ShapeRange.AddToSelectionメソッドを使用できます。

選択範囲内のshapeにアクセスする

Accessing the shapes in a selection

あなたが、選択範囲内のshapeにアクセスすることができるように、あなたは、選択範囲内で、shapeにアクセスするために、類似した方法を使用することができます。

ここに、選択範囲内の図形にアクセスするためのVBAのコード例があります。:

Dim shs As Shapes, sh As Shape

Set shs = ActiveSelection.Shapes

For Each sh In shs
    ' Do something with the shape, sh
    ' shapeで何を行う。sh
Next sh

ここに、選択範囲内の図形にアクセスするためのVBAのコード例があります。:

Dim sRange As ShapeRange, sh As Shape

Set sRange = ActiveSelectionRange

For Each sh In sRange
    ' Do something with the shape, sh
  ’ shapeで何を行う。sh
Next sh

ActiveSelectionRangeコマンドは、現在の選択の範囲のコピーを提供しますが、ActiveSelection.Shapesコマンドを使用すると、現在の選択に直接アクセスできることに注意してください。あなたが、現在の選択にアクセスしたい場合、ActiveSelection.Shapesを使用します。;あなたが、後で、アクセスできる現在の選択の「スナップショット」を作成したい場合、ActiveSelectionRangeを使用します。

選択範囲内のshapeを並べ替える

Reordering the shapes in a selection

ActiveSelection.ShapesコマンドとActiveSelectionRangeコマンドは、選択された順序と逆の順序で形状を返します。:最初のshapeは、最後に選択されたものです。そして、最後のshapeは、最初に選択されたものです。選択範囲内の図形を並べ替えるとき、この事実を覚えておいてください。

shapeの選択を外す

Deselecting shapes

あなたは、Shape.Selectedプロパティの値をFalseに変更することで、どんなshapeの選択も解除するができます。

Document.ClearSelectionメソッドを使用して、あなたは、すべてのshapeの選択を解除できます。次のVBAコードは、アクティブ文書で、すべてのshapeの選択を解除するために、ClearSelectionメソッドを使用します。:

ActiveDocument.ClearSelection

必要に応じて、あなたは、shapeを削除すると引き起こされる、イベントに応答するイベント・ハンドラを使用できます。:

  • Document.ShapeChange

あなたは、選択のアクティブ化を解除すると発生するイベントに応答するイベント・ハンドラを使用することもできます。:

  • Application.SelectionChange
  • Document.SelectionChange
  • GlobalMacroStorage.SelectionChange

shapeをコピーする

Duplicating shapes

あなたは、shapeを複製するShape.Duplicateメソッドを使用できます。そして、あなたは、shapeの範囲を複製するShapeRange.Duplicateメソッドを使用できます。

ActiveSelection.Duplicate

Duplicateメソッドは、オリジナルから、複製をオフセットする、2つのオプションのパラメーターOffsetXとOffsetYを提供します。(それぞれ、水平と垂直)次のVBAコードは、複製を、オリジナルの2インチ右に、1インチ上に配置します。:

ActiveDocument.Unit = cdrInch
ActiveSelection.Duplicate 2, 1

shapeを変形させる

Transforming shapes

あなたは、いろいろな方法で、shapeを変形させることができます。次のトピックで説明されるように:

必要に応じて、あなたは、shapeを変形させることで、引き起こされるイベントに応答するイベント・ハンドラを使用することができます。:

  • Document.ShapeTransform

shapの大きさを変更する

Sizing shapes

次のVBAの例のように、あなたは、Shape.SizeWidthとShape.SizeHeightプロパティを使用して、(文書単位で)shapeの幅と高さを返すことができます。:

Dim width As Double, height As Double

ActiveDocument.Unit = cdrMillimeter

width = ActiveShape.SizeWidth

height = ActiveShape.SizeHeight

あなたは、それらのプロパティの新しい値を指定することで、既存のshapeの大きさを変更するために、Shape.SizeWidthとShape.SizeHeightプロパティを使用することもできます。次のVBAの例は、アクティブshapeの大きさを幅50ミリメートル、高さ70ミリメートルに設定するために、これらのプロパティを使用します。:

ActiveDocument.Unit = cdrMillimeter

ActiveShape.SizeWidth = 50

ActiveShape.SizeHeight = 70

あなたは、(文書単位で)shapeの幅と高さの両方を返すことができます。次のVBAの例のように、Shape.GetSizeメソッドを使用して、:

Dim width As Double, height As Double

ActiveDocument.Unit = cdrMillimeter

ActiveShape.GetSize width, height

次のVBAの例のように、あなたは、新しい幅と新しい高さを指定するために、Shape.SetSizeメソッドを使用して、shapeの大きさを変更できます。:

ActiveDocument.Unit = cdrMillimeter

ActiveShape.SetSize 50, 70

あなたは、Shape.SetSizeExメソッドを使用して、shapeの大きさを変更することもできます。shapeの新しい幅と新しい高さに加えて、このメソッドは、(shapeの中心を使用する代わりに)大きさを変更するの基準点を取ります。次のVBAコードは、文書の参照点(6、5)の高さ8インチで、現在の選択を10インチ幅に大きさを変更するために、SetSizeExメソッドを使用します。:

ActiveDocument.Unit = cdrInch

ActiveSelection.SetSizeEx 6, 5, 10, 8

あなたが、shapeの輪郭線を考慮したい場合、そのshapeの大きさを返すとき、あなたは、Shape.GetBoundingBoxメソッドを使用する必要があります。shapeの境界ボックスは、shapeとその輪郭線の両方を囲みます。;しかしながら、shapeの実際の寸法は、輪郭線の大きさには関係なく、幅と高さを指定します。次のVBAの例は、アクティブなshapeの大きさを返すために、GetBoundingBoxメソッドを使用します。:

Dim width As Double, height As Double

Dim posX As Double, posY As Double

ActiveDocument.Unit = cdrInch

ActiveDocument.ReferencePoint = cdrBottomLeft

ActiveShape.GetBoundingBox posX, posY, width, height, True

Shape.GetBoundingBoxメソッドは、shapeの左下角の位置を指定する、shapeの幅とshapeの高さのパラメータを受け取ります。最後のパラメーターは、shapeの輪郭線を(True)を含めるか、除外する(間違った)かどうかを示す、Boolean値です。Shape.SetBoundingBoxメソッドは、あなたが、境界ボックスの大きさを指定することによって、shapeの大きさを設定することができます。;しかしながら、このメソッドには、輪郭線を新しい寸法に含めるかどうかを指定するためのパラメーターがありません。あなたが、輪郭線を含めることなく、shapeの境界ボックスの寸法と位置を計算したい場合、あなたは、次のVBAの例のように、GetBoundingBoxメソッドを、2回、(輪郭線を含めて一度、そして、除いて一度)使用できます。:

Public Sub SetBoundingBoxEx(X As Double, Y As Double, _
                            Width As Double, Height As Double)

    Dim sh As Shape
    Dim nowX As Double, nowY As Double
    Dim nowWidth As Double, nowHeight As Double
    Dim nowXol As Double, nowYol As Double
    Dim nowWidthol As Double, nowHeightol As Double
    Dim newX As Double, newY As Double
    Dim newWidth As Double, newHeight As Double
    Dim ratioWidth As Double, ratioHeight As Double

    Set sh = ActiveSelection

    sh.GetBoundingBox nowX, nowY, nowWidth, nowHeight, False

    sh.GetBoundingBox nowXol, nowYol, nowWidthol, nowHeightol, True

    ratioWidth = Width / nowWidthol

    ratioHeight = Height / nowHeightol

    newWidth = nowWidth * ratioWidth

    newHeight = nowHeight * ratioHeight

    newX = X + (nowX - nowXol)

    newY = Y + (nowY - nowYol)

    sh.SetBoundingBox newX, newY, newWidth, newHeight, False, cdrBottomLeft

End Sub

shapeを引き伸ばす

Stretching shapes

あなたは、Shape.StretchやShape.StretchExを使用して、shapeを引き伸ばすことができます。または、ストレッチによるスケーリングが比例的に行われます)両方のメソッドは、引き伸ばしに、10進値を使用します。1は、100%(または、変化なし)です;あなたは、ゼロを使用することができません。そのため、あなたは、その代わりに、非常に小さな値を使用する必要があります。

次のVBAコードは、境界ボックスの下端の中点の周りに、現在の高さを半分に、そして、幅の2倍に選択範囲を拡大するために、Shape.Stretchメソッドを使用します。:

ActiveDocument.ReferencePoint = cdrBottomMiddle

ActiveSelection.Stretch 2, 0.5

あなたが、範囲を実行する参照ポイントを指定したい場合、あなたは、Shape.StretchExメソッドを使用できます。次のVBAコードは、前のコードと同じストレッチを実行しますが、それは、ページ上のポイント(4、5)を中心に(インチ単位で)ストレッチを実行します。:

ActiveDocument.Unit = cdrInch

ActiveSelection.StretchEx 4, 5, 2, 0.5

Shape.StretchとShape.StretchExメソッドは、オプションのBooleanパラメータを提供します。それは、段落テキストをどのように引き伸ばすかを決定します。値が、Trueの場合、文字が引き伸ばされ、Falseは、境界ボックスを引き伸ばし、それの中でテキストを再流動化させます。

shapeを歪曲する

Skewing shapes

あなたは、Shape.Skewメソッド、あるいは、Shape.SkewExメソッドを使用して、shapeを歪曲することができます。これらのメソッドは、あなたが、水平な歪曲角を指定できます。(度で、正の値は、上端を左に、下端を右に移動します)そして、垂直歪曲角(度で、正の値は、右端を上に、左端を下に移動します)。

  • 90°に近い、あるいは、超える角度の歪曲は、許可されません。
  • 90°に近い、あるいは、超える角度の歪曲は、許可されません。

Shape.SkewとShape.SkewExメソッドの違いは、歪曲が、実行されるポイントです。:SkewExが、指定された基準点を使用する一方、歪曲は、shapeのために回転中心を使用します。

あなたは、そのShape.RotationCenterXとShape.RotationCenterYプロパティの値を返すことで、shapeの回転中心を決定できます。これらの値を変更すると、その形状の回転中心が移動します。

次のVBAコードは、水平方向に30°、垂直方向に15°で、Shape.Skewメソッドを使用して、選択範囲を(その回転中心について)傾斜させます。:

ActiveSelection.Skew 30, 15 

shapeを回転させる

Rotating shapes

あなたは、Shape.RotateメソッドやShape.RotateExメソッドを使用して、図形を回転できます。これらのメソッドは、指定された角度(度単位)で、shapeを回転させます。しかしながら、これらのメソッドの違いは、それらが、回転を実行するポイントです。:RotateExが、指定された基準点を使用する一方で、回転は、shapeのために回転中心を使用します。

あなたは、そのShape.RotationCenterXとShape.RotationCenterYプロパティの値を返すことで、shapeの回転中心を決定できます。これらの値を変更すると、その形状の回転中心が移動します。

次のVBAコードは、Shape.Rotateメソッドを使用して、選択範囲を(その回転中心について)30°回転します。:

ActiveSelection.Rotate 30

次のVBAコードは、Shape.RotateExメソッドを使用して、右下隅を中心に時計回りに15°ずつ、それぞれの選択したshapeを回転させます。:

Dim sh As Shape

ActiveDocument.ReferencePoint = cdrBottomRight

For Each sh In ActiveSelection.Shapes
	sh.RotateEx -15, sh.PositionX, sh.PositionY 
Next sh

shapeを配置する

Positioning shapes

あなたは、(それぞれ)Shape.PositionXとShape.PositionYプロパティを使用して、shapeの水平や垂直位置を返すことができます。別の方法では、あなたは、返すために、shapeの水平位置と垂直位置の両方で、Shape.GetPositionメソッドを使用します。

あなたが、輪郭線が含まれる形状の位置を返したい場合、あなたは、Shape.GetBoundingBoxメソッドを使用できます。このメソッドの詳細については、「shapeの大きさ設定」を参照してください。

次のVBAコードは、コードが、左下角に明示的に設定するアクティブ文書の現在の参照ポイントに、選択した相対的な位置を返すために、Shape.GetPositionメソッドを使用します。:

Dim posX As Double, posY As Double

ActiveDocument.ReferencePoint = cdrBottomLeft

ActiveSelection.GetPosition posX, posY

あなたは、(それぞれ)shapeの水平位置と垂直位置を設定するには、Shape.PositionXとShape.PositionYプロパティを使用できます。それによって、指定された位置に、そのshapeを移動します。別の方法では、あなたは、指定された水平や垂直位置にshapeを移動するために、Shape.SetPositionメソッドを使用できます。あるいは、あなたは、shapeを指定された点へ移動するために、Shape.SetPositionExメソッドを使用できます。

あなたは、shapeの位置を設定するために、Shape.SetSizeExとShape.SetBoundingBoxメソッドを使用できます。これらのメソッドの詳細については、「shapeの大きさ設定」を参照してください。

次のVBAコードは、アクティブ文書で、インチ単位で(3、2)に、それぞれの選択されたshapeの右下角の位置を設定するために、Shape.SetPositionメソッドを使用します。:

Dim sh As Shape

ActiveDocument.Unit = cdrInch

ActiveDocument.ReferencePoint = cdrBottomRight

For Each sh In ActiveSelection.Shapes
    sh.SetPosition 3, 2
Next sh

必要に応じて、あなたは、shapeを配置することで、引き起こされるイベントに反応するために、イベント・ハンドラを使用することができます。:

  • Document.ShapeMove

shapeに色をつける

Coloring shapes

あなたは、塗り潰し(あるいは、Fillオブジェクト)をそれに適用することで、shapeに色を追加することができます。形状の塗り潰し型が、次の定数の1つとして、cdrFillType列挙体のために、Fill.Typeプロパティで、記録されます。:

  • cdrUniformFill-uniform fill
  • cdrFountainFill-fountain fill
  • cdrPatternFill-pattern fill
  • cdrTextureFill-texture fill
  • cdrPostScriptFill-PostScript fill
  • cdrHatchFill-hatch fill
  • cdrNoFill-no fill

次のVBAコードは、アクティブshapeに適用される塗り潰し型を返します。:

Dim fillType As cdrFillType

fillType = ActiveShape.Fill.Type

あなたは、Fill.Typeプロパティの変更することによって、shapeの塗り潰し型を変更することができません。そのかわりに、あなたは、あとに続くサブセクションで説明する適切なFill.Apply...fillメソッドを使用する必要があります。

あなたは、輪郭線(あるいは、Outlineオブジェクト)をそれに適用することで、shapeに色を追加することもできます。

加えて、オブジェクト・モデルは、あなたが、shapeに適用するために、色(あるいは、Colorオブジェクト)を操作するための、いろいろなプロパティとメソッドを提供します。

塗り潰しと輪郭線を適用する、そして、色の操作の情報については、次のサブトピックを参照してください:

あなたのマクロでは、あなたは、特定の塗り潰しプロパティ、輪郭線のプロパティやカラー・プロパティを持っている、shapeを検索するクエリを含めることができます。詳細については、アプリケーションのマクロ・ヘルプファイルで「マクロに問合せを含める」を参照してください。

均一な塗り潰しを適用する

Applying uniform fills

均一な塗り潰しは、一つの同一の色で構成されています。均一な塗り潰しは、Colorオブジェクトとして、Fill.UniformColorプロパティによって表現されています。

あなたは、Fill.ApplyUniformFillメソッドを使用して、均一な塗り潰しをshapeに適用することができます。次のVBAの例は、赤い均一な塗り潰しをアクティブshapeに適用します:

ActiveShape.Fill.ApplyUniformFill CreateRGBColor(255, 0, 0)

あなたは、Fill.UniformColorプロパティを変更することで、均一な塗り潰しの色を変更できます。次のVBAの例は、アクティブshapeの均一な塗り潰しを、濃紺色に変更します。:

ActiveShape.Fill.UniformColor.RGBAssign 0, 0, 102

あなたは、Fill.ApplyNoFillメソッドを使用することにより、shapeから均一な塗り潰しを削除することができます。

噴水塗り潰しを適用する

Applying fountain fills

噴水塗り潰しは、2色間で進行を表現します。噴水塗り潰しは、FountainFillオブジェクトとして、噴水塗り潰しのために、いろいろなプロパティを指定するFill.Fountainプロパティによって表現されます。:開始色、終了色、角度、ブレンド型など、噴水塗り潰しの色は、FountainColorsコレクションで表現されます。

あなたは、Fill.ApplyFountainFillメソッドを使用して、噴水塗り潰しをshapeに適用することができます。このメソッドは、中点とブレンドのオフセットのような、いろいろな噴水塗り潰し設定のためのオプションのパラメーターを提供します。次のVBAの例は、単純な、赤から黄色に、水平に対して30度で、線形噴水塗り潰しを作成します。:

Dim startCol As New Color, endCol As New Color

startCol.RGBAssign 255, 0, 0

endCol.RGBAssign 255, 255, 0

ActiveShape.Fill.ApplyFountainFill startCol, endCol, cdrLinearFountainFill, 30

あなたは、FountainColors.Addメソッドを使用して、噴水塗り潰しに色を追加することができます。色の位置は、0%は、開始色の位置であり、100%は、終了色の位置で、パーセント単位の整数値です。次のVBAの例は、既存の赤い色から、方向の約3分の1(33%)の位置で、緑色を、噴水塗り潰しに追加します。:

Dim fFill As FountainFill

Set fFill = ActiveShape.Fill.Fountain

fFill.Colors.Add CreateRGBColor(0, 102, 0), 33

あなたは、FountainColor.Moveメソッドを使用して、噴水塗り潰しの色を移動することができます。次のVBAコードは、赤からの方向の60%(つまり、黄色に向かって)に、前の例の緑色を位置に移動します。:

ActiveShape.Fill.Fountain.Colors(1).Move 60

あなたは、色の数を測定するFountainColors.Countプロパティを使用することができます。噴水塗り潰しの開始色と終了色の間で、(前の例では、この値は1です。)コレクションの最初の色は、開始色で、そのインデックス番号は、0です。;この色は、移動できませんが、その色は、変更することができます。コレクションの最後の色は、終了色です。そして、そのインデックス番号は、(Count + 1)です。;この色は、移動できませんが、その色は、変更することができます。次のVBAコードは、終了色を黄色から青に変更します。:

Dim cols As FountainColors

Set cols = ActiveShape.Fill.Fountain.Colors

cols(cols.Count + 1).Color.RGBAssign 0, 0, 102

あなたは、Fill.ApplyNoFillメソッドを使用することにより、shapeから噴水塗り潰しを削除することができます。

パターン塗り潰しを適用する

Applying pattern fills

パターン塗り潰しは、一連の繰り返されるベクトル・オブジェクトやビットマップ画像を表示します。パターン塗り潰しは、PatternFillオブジェクトとして、パターン塗り潰し:のために、いろいろなプロパティを指定するFill.Patternプロパティによって表現されます。:前景色、背景色、タイルオフセットなど。

パターン塗り潰しの利用可能なコレクションは、PatternCanvasesコレクションに格納されます。

あなたは、Fill.ApplyPatternFillメソッドを使用して、パターン塗り潰しをshapeに適用することができます。

あなたは、Fill.ApplyNoFillメソッドを使用することにより、shapeからパターン塗り潰しを削除することができます。

テクスチャ塗り潰しを適用する

Applying texture fills

テクスチャ塗り潰しは、フラクタルに発生し、一連の繰り返し画像ではなく、1つの画像を使用して、shapeを塗り潰します。テクスチャ塗り潰しは、TextureFillオブジェクトとして、テクスチャ塗り潰しのために、いろいろなプロパティを指定するFill.Textureプロパティによって表現されます。:原点、解像度、タイル・オフセットなど。

テクスチャ塗り潰しのプロパティは、TextureFillPropertiesコレクションに格納されています。

あなたは、Fill.ApplyTextureFillメソッドを使用して、テクスチャ塗り潰しをshapeに適用することができます。

あなたは、Fill.ApplyNoFillメソッドを使用することにより、shapeからテクスチャ塗り潰しを削除することができます。

PostScript塗り潰しを適用する

Applying PostScript fills

PostScript塗り潰しは、PostScript言語を使用してデザインされているテクスチャ塗り潰しです。PostScript塗り潰しは、PostScriptFillオブジェクトとして、PostScript塗り潰しのために、いろいろなプロパティを指定するFill.PostScriptプロパティによって表現されます。:

あなたは、Fill.ApplyPostScriptFillメソッドを使用して、PostScript塗り潰しをshapeに適用することができます。

あなたは、Fill.ApplyNoFillメソッドを使用することにより、shapeからPostScript塗り潰しを削除することができます。

ハッチ塗り潰しを適用する

Applying hatch fills

ハッチ塗り潰しは、図面内のマテリアルやオブジェクトの関係を明確に区別するために使用できる、ベクトル・ベースの線で構成されています。ハッチ塗り潰しは、HatchFillオブジェクトとして、ハッチ塗り潰しのために、いろいろなプロパティを指定するFill.Hatchプロパティによって表現されます。:

ハッチ塗り潰しのパターンの利用可能なコレクションは、HatchPatternsコレクション構造体に格納されます。そして、それぞれの文書は、ハッチ塗り潰しパターンのそれ自身のライブラリをHatchLibrariesコレクションに格納します。

あなたは、Fill.ApplyHatchFillメソッドを使用して、ハッチ塗り潰しをshapeに適用することができます。

あなたは、Fill.ApplyNoFillメソッドを使用することにより、shapeからハッチ塗り潰しを削除することができます。

輪郭線を適用する

Applying outlines

あなたは、shapeの輪郭線を定義するOutlineクラスのいろいろなプロパティとメソッドを使用することができます。

指定されたshapeが、輪郭線を持っているかどうかにかかわらず、Outline.Typeプロパティは、記録するために、cdrOutlineType列挙体の次の定数を使用します:

  • cdrOutline-shapeが、輪郭線を持っていることを示します。
  • cdrNoOutline-shapeが、輪郭線を持たないことを示します。

shapeが、輪郭線を持っていない場合、Outline.TypeプロパティをcdrOutlineに設定すると、文書のデフォルトのアウトライン・スタイルが適用されます。

shapeが、輪郭線を持っている場合、Outline.TypeプロパティをcdrNoOutlineに設定すると、そのアウトラインが削除されます。

輪郭線のOutline.Widthプロパティは、文書単位で、その幅を設定します。次のVBAの例では、選択されたshapeの輪郭線は、1ミリメートルに設定されます。:

ActiveDocument.Unit = cdrMillimeter

ActiveSelection.Outline.Width = 1

shapeが、輪郭線を持たない場合、そのOutline.Width値は、0です。この値を変更すると、輪郭線が適用されます。そして、自動的に、Outline.Typeプロパティの値をcdrNoOutlineからcdrOutlineに、変更します。

同様に、shapeが、輪郭線を持っている場合、そのOutline.Width値は、0より大きいです。この値を0に変更すると、輪郭線が削除されます。そして、自動的に、Outline.Typeプロパティの値をcdrOutlineからcdrNoOutlineに、変更します。

次のVBAの例のように、輪郭線のOutline.Colorプロパティは、その色を定義します。:

ActiveSelection.Outline.Color.GrayAssign 0 ' Set to black

輪郭線の色を設定すると、自動的に、その輪郭線のOutline.Typeプロパティが、cdrOutlineに設定されます。そして、デフォルトの輪郭線の幅を適用します。

輪郭線のOutline.Styleプロパティは、その輪郭線の破線設定を指定します。これらの破線設定は、OutlineStyleクラスの次のプロパティによって、定義されます。:

  • DashCount-輪郭線の破線と隙間の組み合わせの数を表現します。この値の範囲は、1~5です。
  • DashLength-輪郭線で、それぞれの破線の長さを表現します。この値は、文書単位で、測定されている輪郭線の幅の倍数として計算されます。たとえば、DashLength(1)が、5の場合、そして、輪郭線は、0.2"の幅、破線の長さは、1"です。;しかしながら、線の幅が、0.1"に変更される場合、破線の長さは、0.5"になります。
  • GapLength-輪郭線で、それぞれの隙間の長さを表現します。この値は、文書単位で、測定されている輪郭線の幅の倍数として計算されます。
  • Index-アプリケーションのOutlineStylesコレクションで、定義済みの輪郭線のスタイルのインデックス番号を表現します。OutlineStylesコレクションが、カスタマイズ可能であるため、コレクション内のそれぞれの輪郭線のスタイルに関連付けられているインデックス番号は、ユーザーごとに異なる場合があります。;しかしながら、式OutlineStyles.Item(0)は、常に、実線を指定します。

以下を含む、輪郭線のオブジェクトは、多くの他のプロパティを持っています。:

  • StartArrowとEndArrow-開いた曲線のそれぞれの終端に、矢印を指定します。
  • LineCapsとLineJoin-それぞれ、ラインキャップ(バット、円形、または正方形)の型を指定し、線は、(ベベル、マイター、または円形)結合します。
  • NibAngleとNibStretch-輪郭線を描くために使用されるペン先の形状を指定します。
  • BehindFillとScaleWithShape-それぞれ、塗り潰しの後ろに輪郭線を描き、shapeを持つ輪郭線を拡大縮小します。

以下を含む、輪郭線のオブジェクトは、メソッドも持っています。:

  • ConvertToObject-輪郭線を、オブジェクトに変換します。
  • SetProperties-使用可能な輪郭線プロパティのほとんどを1回の呼び出しで設定します。

色で作業する

Working with color

あなたが、shapeに適用するために、Colorクラスは、塗り潰し色と輪郭線の色を定義します。このクラスは、色を操作するために、多くのプロパティとメソッドを提供します。

次のVBAの例のように、あなたは、そのColor.Typeプロパティにアクセスすることで、色のカラーモデルを決定することができます。:

Dim colType As cdrColorType

colType = ActiveShape.Outline.Color.Type

Color.Typeプロパティは、サポートされたカラーモデルに対して、(多くの他の間で)次の定数を提供する、cdrColorType列挙体によって定義されています。:

  • cdrColorCMYK-CMYKカラーモデルを指定します。
  • cdrColorRGB-RGBカラーモデルを指定します。
  • cdrColorGray-グレースケール・カラーモデルを指定します。

次のVBAの例でデモンストレーションされるように、Colorクラスの追加のプロパティによって、それぞれのサポートされたカラー・モデルの色成分が定義されています。:

  • CMYKカラーモデル-Color.CMYKCyan、Color.CMYKMagenta、Color.CMYKYellowとColor.CMYKBlackプロパティによって定義されています。
  • RGBカラーモデル-Color.RGBRed、Color.RGBGreenとColor.RGBBlueプロパティによって定義されています。
  • グレースケール・カラーモデル-Color.Grayプロパティによって定義されます。

値の範囲は、色成分が、そのコンポーネントのカラーモデルに依存することで、サポートされています。

色を作成するために、あなたは、Dim col As New Colorのように、オートメーション・キーワードNewを使用できます。

新しい色に色モデルを割り当てるために、あなたは、(Color.CMYKAssign、Color.RGBAssignやColor.GrayAssignのような)目的の...Assignメソッドを使用できます。これらのそれぞれのメソッドは、そのそれぞれのカラーモデルのそれぞれの色コンポーネントのために1つのパラメータを提供します。たとえば、col.RGBAssign 0、0、102は、前のヒントで作成された新しい色に、濃い青にRGBカラーを割り当てます。

カラーモデルを変更するために、アプリケーションのカラーマネージメント設定を使用します。それは、色に割り当てます。あなたは、(Color.ConvertToCMYK、Color.ConvertToRGBやColor.ConvertToGrayような)目的の.ConvertTo...メソッドを使用できます。たとえば、ActiveShape.Fill.UniformColor.ConvertToRGBは、アクティブshapeの塗り潰しを、RGBカラーモデルに変換します。

あなたは、次のVBAの例のように、Color.CopyAssignメソッドを使用して、ある色のプロパティを、他の色へコピーすることができます。:

Dim sh As Shape

Set sh = ActiveShape

sh.Outline.Color.CopyAssign sh.Fill.UniformColor

"none"という色は存在しません。塗り潰しの色や輪郭の色を"none"に設定するために、あなたは、代わりに、塗り潰し型、あるいは、輪郭線の型を"none"に設定する必要があります。

shapeに効果を適用する

Applying effects to shapes

オブジェクト・モデルは、shapeに適用している効果のために、たくさんのメソッドを提供します。これらのメソッドに関する情報については、次のサブトピックを参照してください。:

効果を適用することは、Effectオブジェクトを返します。そしてそれはあなたに作成された効果のためにいろいろなプロパティとメソッドにアクセスさせます。たとえば、あなたは、shapeを区切るEffect.Separateメソッドを使用することができます。その効果が適用されるshapeから、効果によってとても発生させられます。加えて、あなたは、shapeから効果を削除するEffect.Clearメソッドを使用することができます。

ブレンドを適用する

Applying blends

Shape.CreateBlendメソッドは、現在のshapeとパラメータとしての指定するshapeの間で、ブレンドを作成します。このメソッドは、ブレンドの加速やブレンドが作成されたパスに沿って、いろいろなブレンド設定のためのオプションのパラメーターを提供します。

次のVBAコードは、基本的な10ステップのブレンドを作成します。:

Dim sh As Shapes, eff As Effect

Set sh = ActiveSelection.Shapes

Set eff = sh(1).CreateBlend(sh(2), 10)

前述の例では、ブレンドのshapeの数は、12です:開始および終了形状、加えて、10の作成される手順を混合します。

Shape.CreateBlendメソッドは、あなたが、作成したブレンドを変更するために、使用することができるEffect.BlendプロパティのEffectオブジェクトを返します。

等高線を適用する

Applying contours

Shape.CreateContourメソッドは、等高線をshapeに適用します。このメソッドは、色と等高線の加速のような、いろいろな等高線設定のためのオプションのパラメーターを提供します。

次のVBAコードは、5ミリメートルの間隔で3段階の等高線を作成します。:

Dim eff As Effect

ActiveDocument.Unit = cdrMillimeter

Set eff = ActiveShape.CreateContour(cdrContourOutside, 5, 3)

Shape.CreateContourメソッドは、あなたが、作成した等高線の変更するために使用できるEffect.ContourプロパティのEffectオブジェクトを返します。

カスタマイズされた効果を適用する

Applying customized effects

Shape.CreateCustomEffectメソッドは、カスタマイズされた効果をshapeに適用します。このメソッドは、いろいろな効果を設定するためのパラメータを提供します。

Shape.CreateCustomEffectメソッドは、あなたが作成した効果を変更するために使用できるEffect.CustomプロパティのEffectオブジェクトを返します。

歪曲を適用する

Applying distortions

次のメソッドは、歪曲を、shapeに適用します:

  • Shape.CreatePushPullDistortion-プッシュ&プル歪曲Shapeを適用します。
  • CreateTwisterDistortion-ツイスター歪曲を適用します
  • Shape.CreateZipperDistortion-ジッパー歪曲を適用します
  • Shape.CreateCustomDistortion-カスタマイズされた歪曲を適用します

これらのメソッドは、いろいろな歪曲設定のためにパラメータを提供します。

歪み作成メソッドは、あなたが作成した歪曲を変更するために使用できるEffect.DistortionプロパティのEffectオブジェクトを返します。

必要に応じて、あなたは、イベントに応答するイベント・ハンドラを使用することができます。shapeを歪めることで、引き起こされます。:

  • Document.ShapeDistort

ドロップ・シャドウを適用する

Applying drop shadows

Shape.CreateDropShadowメソッドは、ドロップ・シャドウをshapeに適用します。このメソッドは、フェザリングとドロップ・シャドウのオフセットのような、いろいろなドロップ・シャドウ設定のためのオプションのパラメーターを提供します。

Shape.CreateDropShadowメソッドは、Effectオブジェクトを返します。あなたが作成したドロップ・シャドウを変更するために使用できるEffect.DropShadowプロパティ。

エンベロプを適用する

Applying envelopes

次のメソッドは、envelopeを、shapeに適用します:

  • Shape.CreateEnvelope-基本的なエンベロプを適用します。
  • Shape.CreateEnvelopeFromCurve-指定された曲線をテンプレートとして使用して、エンベロープを適用します。
  • Shape.CreateEnvelopeFromShape-指定されたshapeをテンプレートとして使用して、エンベロープを適用します。

これらのメソッドは、いろいろなenvelope設定のためにパラメータを提供します。

エンベロープ作成メソッドは、あなたが作成したエンベロプを変更するために使用できるEffect.EnvelopeプロパティのEffectオブジェクトを返します。

押し出しを適用する

Shape.CreateExtrudeメソッドは、押し出しをshapeに適用します。このメソッドは、押し出しの角度と色のような、いろいろな押し出し設定のためのオプションのパラメーターを提供します。

Shape.CreateExtrudeメソッドは、あなたが作成した押し出しを変更するために使用できるEffect.ExtrudeプロパティのEffectオブジェクトを返します。

レンズを適用する

Applying lenses

Shape.CreateLensメソッドは、レンズをshapeに適用します。このメソッドは、色とレンズの大きさのような、いろいろなレンズ設定のためのオプションのパラメーターを提供します。

Shape.CreateLensメソッドは、あなたが作成したレンズを変更するために使用できるEffect.LensプロパティのEffectオブジェクトを返します。

遠近法を適用する

Applying perspective

Shape.CreatePerspectiveメソッドは、遠近法をshapeに適用します。このメソッドは、水平と垂直の消失点を指定するために、オプションのパラメーターを提供します。

Shape.CreatePerspectiveメソッドは、あなたが作成した遠近法効果を変更するために使用できるEffect.PerspectiveプロパティのEffectオブジェクトを返します。

shapeを投影する

Projecting shapes

等角投影は、見かけ上の3次元オブジェクトに変換される、2次元オブジェクトです。Corel DESIGNERでは、あなたは、Shape.Projectメソッドを使用して、一つのshapeを投影することができます。あるいは、あなたは、ShapeRange.Projectメソッドを使用して、shapeの範囲を投影することができます。

範囲内の形状は、互いに平行に投影されるため、それらは、消失点に収束しません。

あなたは、形状を3つの等角平面に投影できます。:

  • 上部
  • 正面(デフォルト)
  • 右側

あなたは、指定した基準点から投影を開始することもできます。:

  • 上部左側
  • 上部中央
  • 上部右側
  • 中央
  • 左の中央(デフォルト)
  • 中央の右側
  • 下部左側
  • 下部中央
  • 下部右側

最後に、あなたは、指定したオブジェクトの複製、または、元のオブジェクトに投影を適用できます。

次のVBAのコード例は、どのように、投影を作成するかをデモンストレーションします:

Sub MakeProjection()

    Dim shp1 As Shape, shp2 As Shape, shp3 As Shape
    Dim shpRng As ShapeRange

    'Create a pair of rectangles and a circle.
     ' 長方形のペアと円を作成します。

    ActiveDocument.Unit = cdrMillimeter

    Set shp1 = ActiveLayer.CreateRectangle2(0, 0, 10, 20)

    Set shp2 = ActiveLayer.CreateRectangle2(50, 50, 20, 10)

    Set shp3 = ActiveLayer.CreateEllipse(10, 10, 20, 20)

    'Add the rectangles to a ShapeRange.
    ' 長方形を、ShapeRangeに追加します。

    Set shpRng = ActiveLayer.FindShapes(Type:=cdrRectangleShape)

    'Project the shapes onto the top isometric plane,
    'using the upper-right corner of the ShapeRange bounding box
    'as the anchor point. Modify the original object.
    ' アンカーポイントとして、ShapeRange境界ボックスの右上角を使用するために、
    ' 図形を上部の等角平面に投影します。
    ' 元のオブジェクトを変更します。

    shpRng.Project cdrProjectTop, cdrTopRight

    'Project a duplicate of the circle onto the right isometric plane,
    'using the default reference point.
    ' デフォルトの基準点を使用して、円の複製を、右の等角平面に投影します。

    shp3.Project Plane:=cdrProjectRight, ApplyToDuplicate:=True

End Sub

shapを検索する

Searching for shapes

あなたのマクロでは、あなたは、特定のshapeのプロパティ、fillプロパティ、輪郭線プロパティやカラー・プロパティを持っている、shapeを検索するクエリを含めることができます。これを行うために、あなたは、次のメソッドの1つとともに、Corel Query Language(CQL)を使用します。:

  • Shape.Evaluate-現在のshapeのプロパティを評価する与えられた式の結果を返します。
  • Shapes.FindShape-指定されたプロパティを持つ一つのshapeを返します。
  • Shapes.FindShapes-指定されたプロパティを持つ、すべてのshapeをshape範囲として返します。

あなたは、検索する形状プロパティを指定できます。たとえば、式ActiveShape.Evaluate("@name")検索は、選択したすべての図形のNameプロパティを検索します。

TypeプロパティとWidthプロパティを使用して、2インチより広いすべての長方形を選択する次のVBAのコードの例を考えてください。:

ActivePage.Shapes.FindShapes(Query := "@type = 'rectangle' and _

@width > {2 in}").CreateSelection

CQLを使用する包括的な情報については、アプリケーションのマクロ・ヘルプファイルで「マクロにクエリを含める」を参照してください。

shapeを削除する

Deleting shapes

必要に応じて、あなたは、shapeを削除することによって、発生するイベントに応答するイベント・ハンドラを使用することができます。:

Document.ShapeDelete
このエントリーをはてなブックマークに追加