描画されたストロークを消去する

スポンサーリンク

キャンバス上に描かれたストロークを消去するには、EditingMode プロパティにEraseByPoint またはEraseByStroke を指定します。

EraseByPoint を指定した場合はペンと交差した部分のみが消去され、EraseByStroke を指定した場合はペンと交差したストローク自体が消去されます。(ストロークとは描き始めから描き終わりまでを表す1本の連続した線を言います)

また、キャンバスに描かれたストロークのすべてを一括で消去するには Strokes プロパティ の Clear メソッドを使用します。

下記はストロークを消去する例です。

EraseByPointでの消去はペンと交差した部分のみが消え、EraseByStrokeはペンと交差した1本のストローク(この例では一筆書きされたL)が消去されています。

秒がされたストロークを消去する例

XAMLの例

<StackPanel>
    <StackPanel Orientation="Horizontal">
        <Button Name="btnInk" Content="インク"/>
        <Button Name="btnEraseByPoint" Content="ポイント消しゴム"/>
        <Button Name="btnEraseByStroke" Content="ストローク消しゴム" />
        <Button Name="btnAllClear" Content="ストローク全消去" Height="23" Width="109" />
    </StackPanel>
    <InkCanvas Name="InkCanvas1" EditingMode="Ink" />
</StackPanel>

VBの例

' [インク]ボタンクリック時の処理
Private Sub btnInk_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles btnInk.Click
    'インクを使用できる状態にする
    InkCanvas1.EditingMode = InkCanvasEditingMode.Ink
End Sub

' [ポイント消しゴム]ボタンクリック時の処理
Private Sub btnEraseByPoint_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles btnEraseByPoint.Click
    'ペンがストロークと交差した部分のみを消去する
    InkCanvas1.EditingMode = InkCanvasEditingMode.EraseByPoint
End Sub

' [ストローク消しゴム]ボタンクリック時の処理
Private Sub btnEraseByStroke_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles btnEraseByStroke.Click
    'ペンが交差したストロークの全体を消去する
    InkCanvas1.EditingMode = InkCanvasEditingMode.EraseByStroke
End Sub

' [ストローク全消去]ボタンクリック時の処理
Private Sub btnAllClear_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles btnAllClear.Click
    '全ストロークを消去する
    InkCanvas1.Strokes.Clear()
End Sub

C#の例

// [インク]ボタンクリック時の処理
private void btnInk_Click(object sender, RoutedEventArgs e)
{
    // インクを使用できる状態にする
    inkCanvas1.EditingMode = InkCanvasEditingMode.Ink;
}

// [ポイント消しゴム]ボタンクリック時の処理
private void btnEraseByPoint_Click(object sender, RoutedEventArgs e)
{
    // ペンがストロークと交差した部分のみを消去する
    inkCanvas1.EditingMode = InkCanvasEditingMode.EraseByPoint;
}

// [ストローク消しゴム]ボタンクリック時の処理
private void btnEraseByStroke_Click(object sender, RoutedEventArgs e)
{
    // ペンが交差したストロークの全体を消去する
    inkCanvas1.EditingMode = InkCanvasEditingMode.EraseByStroke;
}

// [ストローク全消去]ボタンクリック時の処理
private void btnAllClear_Click(object sender, RoutedEventArgs e)
{
    // 全ストロークを消去する
    inkCanvas1.Strokes.Clear();
}
タイトルとURLをコピーしました