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