キャンバス上に描かれたストロークを消去するには、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();
}
