2011-03-30 63 views
0

我有畫板作爲InkCanvas;我想,所以我已經寫了改變橡皮擦尺寸:InkCanvas Eraser

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

  1. 選擇橡皮擦,橡皮stylusTip會出現矩形
  2. 按下+號來增大尺寸,你不會看到任何改變。爲什麼?
  3. 現在您按i更改編輯模式,將出現墨水提示。
  4. 再次按e重新切換到橡皮擦。你會看到橡皮擦的形狀已經改變。

爲什麼不按+符號後?

回答

2

help

「如果你改變了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; 
} 
+0

但它不是它應該工作,橡皮擦應該反映的變化,雖然我們不切換編輯模式,因爲它適用於油墨體形的方式。 ink.EraserShape = new RectangleStylusShape(5,5); 應該工作,爲什麼不工作??? – 2011-04-19 09:08:12

+1

你我可能不同意,但它是在MSDN中,所以它是一個已知和預期的功能。 – 2011-04-19 09:13:35