如何控制InkCanvas仅在鼠标位于特定位置时开始绘制

时间:2017-09-25 10:46:24

标签: c# uwp

我正在C# UWP写一个应用程序。现在我有InkCanvas覆盖整个屏幕,Rectangle表示允许用户开始绘图的区域。一旦用户开始绘图(通过在矩形区域内按下),允许用户在整个屏幕上的任何地方绘图,直到释放鼠标/笔。这是我现在的代码:

<Grid Name="Root" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <InkCanvas Name="MyInkCanvas"/>
    <Rectangle Fill="Green" Width="100" Height="100"/>
</Grid>

我遇到的问题是,如果我将InkCanvas置于顶部(最高zIndex),我可以绘制线条,但没有其他事件通过矩形。在我画画的时候,我也无法找到获得积分的方法。这意味着我无法检查起点是否在矩形区域内。如果我把矩形放在顶部,我按下矩形后就不能让InkCanvas注册一个按下的动作,这意味着不会绘制任何线条。那么,是否可以在特定区域内开始绘图?

1 个答案:

答案 0 :(得分:0)

根据您的要求,您可以参考SimpleInk(方案8)官方代码示例。

使用SimpleInk项目的方案8中的以下方法,您可以找到鼠标位置,然后在绘制之前检查鼠标是否在指定区域。

private bool FollowCircleTest(CoreWetStrokeUpdateEventArgs args)
{
    var position = args.NewInkPoints[0].Position;
    var distanceFromCenter = DistanceFromCenter(position);

    return InCircleEdgeZone(distanceFromCenter);
}