MouseDown 이벤트 WPF를 사용하여 마우스 위치에 inkcanvas에 모양을 추가하려면 어떻게합니까?
-
21-12-2019 - |
문제
나는 단추를 클릭 할 때 크기를 설정하고 사각형을 인스턴스에 추가 할 수있는 다음 코드를 사용합니다. 캔버스의 왼쪽 상단에 모양을 추가합니다. 캔버스에서 마우스를 클릭하는 위치에서 캔버스에 모양을 추가하고 싶습니다.
현재 마우스 위치를 얻습니다 :
private void inkCanvas_MouseMove(object sender, MouseEventArgs e)
{
cursorCoords.Content = Mouse.GetPosition(Application.Current.MainWindow);
// Get the x and y coordinates of the mouse pointer.
System.Windows.Point position = e.GetPosition(this);
pX = position.X;
pY = position.Y;
}
.
모양 도구가 선택되면 (도구== 3) Inkcanvas를 클릭 한 위치에 사각형을 그립니다. 그러나 이것은 그러나 표준 펜 스트로크를 그립니다. 또한 InkCanvas의 어딘가에서 클릭하면 레이블 내용을 현재 위치 좌표로 업데이트하지 않습니다.
private void inkCanvas_MouseDown(object sender, MouseButtonEventArgs e)
{
if (tool == 3)
{
coordstest.Content = pX + '-' + pY;
switch (chosenShape)
{
case "square":
Stroke oS = NewRectangle(pY, pX, size * 4, size * 4);
DrawingAttributes attribs = new DrawingAttributes();
attribs.Color = shapeColour;//Colors.LimeGreen;
attribs.Height = 5.0;
attribs.Width = 5.0;
attribs.FitToCurve = false;
oS.DrawingAttributes = attribs;
inkCanvas.Strokes.Add(oS);
break;
}
}
}
.
tool
는 펜, 배경색 및 모양을 위해 1, 2 또는 3의 바이트에 저장된 공구입니다.
shapeChosen
문자열이며, 정사각형, 별, 원, 삼각형 옵션이 있습니다.
위의 일이 발생하기 위해 잉크 카바 마우스 마우스 다운 이벤트 핸들러에 누락 된 것이 있습니까? 모양을 놓고 싶을 때 펜 도면을 어떻게 멈추게합니까?
해결책
이 경우 MouseDown
이벤트가 작동하지 않아, InkCanvas에 의해 처리되고 버블 러가되지 않으므로 다음 해결 방법을 시도해보십시오.
이벤트 라우트를 따라 다른 요소가 처리 한 라우트 된 이벤트에 대해 제공된 핸들러가 이미 표시된 라우트 핸들러에 대해 호출 할 수있는 핸들러를 True로 지정합니다.
예 :
private void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
MyInkCanvas.AddHandler(InkCanvas.MouseDownEvent, new MouseButtonEventHandler(InkCanvas_MouseDown), true);
}
private void InkCanvas_MouseDown(object sender, MouseButtonEventArgs e)
{
}
.
제휴하지 않습니다 StackOverflow