2011-03-30 4 views
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. 선택 지우개, 지우개 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); 작동해야하며 작동하지 않는 이유는 무엇입니까 ??? –

+1

당신과 나는 동의하지 않을 수도 있지만 MSDN에 있으므로 알려진 기능입니다. –