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で作業するために、いくつかのプロパティ、メソッドとイベントを提供します。最も役に立つものを次の表に示します。
クラス | メンバー | 説明 |
---|---|---|
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を作成する
- shape型を検出する
- shapeを選択する
- shapeをコピーする
- shapeを変形させる
- shapeに色をつける
- shapeに効果を適用する
- shapeを投影する
- shapを検索する
- 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の全ての選択を解除することができます。
図形の選択の詳細については、次のサブトピックを参照してください。:
- 直接、選択にアクセスする
- 選択のコピーにアクセスする
- 選択範囲内のshapeにアクセスする
- 選択範囲内のshapeを並べ替える
- 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オブジェクト)を操作するための、いろいろなプロパティとメソッドを提供します。
塗り潰しと輪郭線を適用する、そして、色の操作の情報については、次のサブトピックを参照してください:
- 均一な塗り潰しを適用する
- 噴水塗り潰しを適用する
- パターン塗り潰しを適用する
- テクスチャ塗り潰しを適用する
- PostScript塗り潰しを適用する
- ハッチ塗り潰しを適用する
- 輪郭線を適用する
- 色で作業する
あなたのマクロでは、あなたは、特定の塗り潰しプロパティ、輪郭線のプロパティやカラー・プロパティを持っている、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