1

我正在尝试在 windows phone 7.1 中捕获签名。

我可以在屏幕上绘图,但我不能将绘图区域限制为 InkPresenter 控件,除非在 mousemove 事件中添加一些处理。

如何使用 XAML 限制绘图区域,或者这是不可能的?

XAML 代码

<InkPresenter  Name="inkTest" Background="White"  MinHeight="180" MinWidth="250" />

代码背后

private Stroke _currentStroke;

private void inkTest_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
    _currentStroke = null;
}

private void inkTest_MouseMove(object sender, MouseEventArgs e)
{
    if (_currentStroke == null) return;
        //HACK: want to set this in XAML
        var position = e.GetPosition(inkTest);
        if (position.X <= inkTest.ActualWidth &&
            position.Y <= inkTest.ActualHeight)

            _currentStroke.StylusPoints.Add(GetStylusPoint(position));
}

private void inkTest_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    inkTest.CaptureMouse();
    _currentStroke = new Stroke();
    _currentStroke.StylusPoints.Add(GetStylusPoint(e.GetPosition(inkTest)));
    _currentStroke.DrawingAttributes.Color = Colors.Blue;
    inkTest.Strokes.Add(_currentStroke);
}

private StylusPoint GetStylusPoint(Point position)
{
    return new StylusPoint(position.X, position.Y);
}   
4

1 回答 1

2

未经测试,但尝试剪辑:

<InkPresenter  Name="inkTest" Background="White"  MinHeight="180" MinWidth="250">
    <InkPresenter.Clip>
         <RectangleGeometry Rect="0,0,180,250"/>  
    </InkPresenter.Clip>
</InkPresenter>

将 的边界更改为RectangleGeometry您想要的(RectangleGeometry如果您需要不同的形状,则更改元素本身)。

于 2012-12-11T16:50:34.887 回答