Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 墨水擦_Wpf_Silverlight_Mvvm_Inkcanvas - Fatal编程技术网

Wpf 墨水擦

Wpf 墨水擦,wpf,silverlight,mvvm,inkcanvas,Wpf,Silverlight,Mvvm,Inkcanvas,我的画板是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 Re

我的画板是
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
试试这个:

  • 按e键选择橡皮擦,橡皮擦stylusTip将显示为矩形
  • 按+符号增加大小,您将看不到任何更改。为什么?
  • 现在按i键更改编辑模式,墨迹提示将出现
  • 再次按e键可重新切换到橡皮擦。您将看到橡皮擦形状已更改
  • 为什么不在按下+符号后?

    从:

    如果更改橡皮擦形状,则在下次编辑模式更改之前,不会更新在InkCanvas上呈现的光标

    我测试了以下代码,效果很好:

    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;
    }
    

    但这不是它应该工作的方式,橡皮擦应该反映出变化,尽管我们不切换编辑模式,因为它适用于墨水形状。ink.橡皮擦形状=新的矩形形状(5,5);应该工作,为什么不工作???你和我可能不同意,但它在MSDN中,所以它是一个已知和预期的功能。