MESCIUS SPREAD for Windows Forms 17.0J
頂点の編集

Spread.NETを使用すると、APIメンバーまたはユーザー操作を使用してシェイプの頂点を編集できます。本機能により、既存のシェイプを要件に応じてカスタムシェイプに変更できます。

シェイプは次を含みます:

頂点の編集

シェイプでの編集点は3種類あります:スムージングする、頂点で線分を伸ばすと頂点を??基準にする。

C#
コードのコピー
// EnhancedShapeEngineを有効にします。
fpSpread1.Features.EnhancedShapeEngine = true;

// FivePointedStarシェイプを追加します。
fpSpread1.AsWorkbook().ActiveSheet.Shapes.AddShape(GrapeCity.Spreadsheet.Drawing.AutoShapeType.FivePointedStar, 100, 100, 100, 100);
       
// シェイプを編集します。
fpSpread1.AsWorkbook().ActiveSheet.Shapes[0].IsEditing = true;
// FivePointedStarでのノードの数を取得します。
var c = fpSpread1.AsWorkbook().ActiveSheet.Shapes[0].Nodes.Count.ToString();
MessageBox.Show(c);

// インデックスで指定されたノードの編集の種類を設定します。
fpSpread1.AsWorkbook().ActiveSheet.Shapes[0].Nodes.SetEditingType(0, GrapeCity.Spreadsheet.Drawing.EditingType.Smooth);

// インデックスで指定されたノードに続く線分の種類を設定します。
fpSpread1.AsWorkbook().ActiveSheet.Shapes[0].Nodes.SetSegmentType(0, GrapeCity.Spreadsheet.Drawing.SegmentType.Curve);

// インデックスで指定されたノードの場所を設定します。
fpSpread1.AsWorkbook().ActiveSheet.Shapes[0].Nodes.SetPosition(0, 50, 50);

// フリーフォームオブジェクトを作成します。
IFreeFormBuilder freeform = fpSpread1.AsWorkbook().ActiveSheet.Shapes.BuildFreeform(EditingType.Corner, 160, 10);
freeform.AddNodes(SegmentType.Curve, EditingType.Corner, 180, 30, 200, 50, 250, 100);
freeform.AddNodes(SegmentType.Curve, EditingType.Auto, 280, 10);
freeform.AddNodes(SegmentType.Curve, EditingType.Auto, 280, 200);
freeform.AddNodes(SegmentType.Line, EditingType.Auto, 160, 10);
freeform.ConvertToShape();

 

VB
コードのコピー
' EnhancedShapeEngineを有効にします。
fpSpread1.Features.EnhancedShapeEngine = True

' FivePointedStarシェイプを追加します。
fpSpread1.AsWorkbook().ActiveSheet.Shapes.AddShape(GrapeCity.Spreadsheet.Drawing.AutoShapeType.FivePointedStar, 100, 100, 100, 100)

' シェイプを編集します。
fpSpread1.AsWorkbook().ActiveSheet.Shapes(0).IsEditing = True

' FivePointedStarでのノードの数を取得します。
Dim c = fpSpread1.AsWorkbook().ActiveSheet.Shapes(0).Nodes.Count.ToString()
MessageBox.Show(c)

' インデックスで指定されたノードの編集の種類を設定します。
fpSpread1.AsWorkbook().ActiveSheet.Shapes(0).Nodes.SetEditingType(0, GrapeCity.Spreadsheet.Drawing.EditingType.Smooth)

' インデックスで指定されたノードに続く線分の種類を設定します。
fpSpread1.AsWorkbook().ActiveSheet.Shapes(0).Nodes.SetSegmentType(0, GrapeCity.Spreadsheet.Drawing.SegmentType.Curve)

' インデックスで指定されたノードの場所を設定します。
fpSpread1.AsWorkbook().ActiveSheet.Shapes(0).Nodes.SetPosition(0, 50, 50)

' フリーフォームオブジェクトを作成します。
Dim freeform As IFreeFormBuilder = fpSpread1.AsWorkbook().ActiveSheet.Shapes.BuildFreeform(EditingType.Corner, 160, 10)
freeform.AddNodes(SegmentType.Curve, EditingType.Corner, 180, 30, 200, 50, 250, 100)
freeform.AddNodes(SegmentType.Curve, EditingType.Auto, 280, 10)
freeform.AddNodes(SegmentType.Curve, EditingType.Auto, 280, 200)
freeform.AddNodes(SegmentType.Line, EditingType.Auto, 160, 10)
freeform.ConvertToShape()

 

頂点やコントロール点を右クリックすると、頂点追加・削除のオプションを提供するコンテキストメニューが表示され、頂点をスムージングする、頂点で線分を伸ばすや頂点を??基準にするのオプションのいずれかも選択できます。シェイプの編集を終了するには、[頂点編集の終了]オプションも選択できます。

ポイントコンテキストメニュー

同様に、線分を右クリックして線分(赤色線や輪郭)のコンテキストメニューを表示します。コンテクストメニューは、頂点の追加、セグメントの削除、直線や曲線セグメントの選択などのオプションを提供します。コンテキストメニューが表示した後、[パスを開く]や[パスを閉じる]オプションも選択できます。

セグメントコンテキストメニュー

BeforeRightClickイベントをハンドルすることで、シェイプのコンテキストメニューをカスタマイズできます。次のコードを使用して、デフォルトコンテキストメニューの表示を停止しています。

C#
コードのコピー
fpSpread1.Features.EnhancedShapeEngine = true;
IShape ss = fpSpread1.AsWorkbook().ActiveSheet.Shapes.AddShape(AutoShapeType.Rectangle, 300, 130, 115, 115);
this.fpSpread1.BeforeRightClick += FpSpread1_BeforeRightClick;

private void FpSpread1_BeforeRightClick(object sender, FarPoint.Win.Spread.BeforeRightClickEventArgs e)
{
    // BeforeRightClickイベントをハンドルすることで、シェイプのコンテキストメニューの表示を停止します。
    e.Cancel = true;
}

 

VB
コードのコピー
Friend Class SurroundingClass
    Private Sub EditShape_CustomizeShapeBeforeRightClick_Load(ByVal sender As Object, ByVal e As EventArgs)
        fpSpread1.Features.EnhancedShapeEngine = True
        Dim ss As IShape = fpSpread1.AsWorkbook().ActiveSheet.Shapes.AddShape(AutoShapeType.Rectangle, 300, 130, 115, 115)
        Me.fpSpread1.BeforeRightClick += AddressOf FpSpread1_BeforeRightClick
    End Sub
    Private Sub FpSpread1_BeforeRightClick(ByVal sender As Object, ByVal e As FarPoint.Win.Spread.BeforeRightClickEventArgs)
        ' BeforeRightClickイベントをハンドルすることで、シェイプのコンテキストメニューの表示を停止します。
        e.Cancel = True
    End Sub
End Class

頂点の追加

シェイプに頂点を追加するには、シェイプの赤色の輪郭を右クリックしてコンテキストメニューを表示し、[頂点の追加]オプションを選択するか、[CTRL]キーを押しながらシェイプの赤色輪郭をクリックします。

ポイントの追加を示す画像

C#
コードのコピー
// ノードを追加します。
fpSpread1.AsWorkbook().ActiveSheet.Shapes[0].Nodes.Insert(0, GrapeCity.Spreadsheet.Drawing.SegmentType.Curve, GrapeCity.Spreadsheet.Drawing.EditingType.Corner, 50, 100, 50, 130, 100, 100);

VB
コードのコピー
' ノードを追加します。
fpSpread1.AsWorkbook().ActiveSheet.Shapes(0).Nodes.Insert(0, GrapeCity.Spreadsheet.Drawing.SegmentType.Curve, GrapeCity.Spreadsheet.Drawing.EditingType.Corner, 50, 100, 50, 130, 100, 100)

ポイントの削除

シェイプでの頂点を削除するには、ノードやコントロールポイントを右クリックしコンテキストメニューを表示し、[頂点の削除]オプションを選択するか、[CTRL]キーを押しながらノードやコントロールポイントをクリックします。

ポイントの削除を示す画像

C#
コードのコピー
// ノードを削除します。
fpSpread1.AsWorkbook().ActiveSheet.Shapes[0].Nodes.Delete(1);
VB
コードのコピー
' ノードを削除します。
fpSpread1.AsWorkbook().ActiveSheet.Shapes(0).Nodes.Delete(1)

 

 


© MESCIUS inc. All rights reserved.