0

私はスケッチパッドを持っていInkCanvasます; 消しゴムのサイズを変更したいので、次のように書きました。

Private Sub Sketchpad_KeyDown(sender As System.Object, e As System.Windows.Input.KeyEventArgs) Handles Sketchpad.KeyDown

If e.Key = Key.OemMinus Then

' Decrease size of Eraser to 5*5 

Sketchpad.EraserShape = New RectangleStylusShape(5, 5)

End If

If e.Key = Key.OemPlus Then

' Increase size of Eraser to 50*50 

Sketchpad.EraserShape = New RectangleStylusShape(50, 50)

End If

If e.Key = Key.I Then
' Change editing mode to Ink
Sketchpad.EditingMode = InkCanvasEditingMode.Ink

End If

If e.Key = Key.E Then
' Change editing mode to Eraser
Sketchpad.EditingMode = InkCanvasEditingMode.EraseByPoint

End If

End Sub

これを試して:

  1. eを押して消しゴムを選択すると、消しゴムのスタイラスのヒントが長方形で表示されます
  2. +記号を押してサイズを大きくすると、変更は表示されません。なんで?
  3. iを押して編集モードを変更すると、インクチップが表示されます。
  4. もう一度eを押すと、消しゴムに戻ります。消しゴムの形状が変更されていることがわかります。

+記号を押してみませんか?

4

1 に答える 1

2

ヘルプから:

「EraserShapeを変更すると、InkCanvasにレンダリングされたカーソルは、次のEditingModeが変更されるまで更新されません。」

次のコードをテストしましたが、正常に動作します。

if (e.Key == Key.OemMinus)
{
    ink.EraserShape = new RectangleStylusShape(5, 5);
    var editMode = ink.EditingMode;
    ink.EditingMode = InkCanvasEditingMode.None;
    ink.EditingMode = editMode;
}
if (e.Key == Key.OemPlus)
{
    ink.EraserShape = new RectangleStylusShape(50, 50);
    var editMode = ink.EditingMode;
    ink.EditingMode = InkCanvasEditingMode.None;
    ink.EditingMode = editMode;
}
于 2011-04-19T08:12:12.023 に答える