0

我今天看到了微软的白板,我喜欢它的基本 inkCanvas(这是我的猜测)控制。我决定使用 inkCanvas 在 UWP 应用程序中创建一个控件,该控件的行为类似于 Microsoft 的白板 UWP 应用程序。Microsoft UWP 白板 - 我的目标如下

  1. 如果inkCanvas 有任何形状靠近右侧绘制,它应该在右侧添加宽度和滚动。我尝试了下面的代码,它确实有效,但没有滚动微软白板的工作方式。
var right = inkCanvas.InkPresenter.StrokeContainer.BoundingRect.Right;
        if (right > inkCanvas.ActualWidth - 400)
        {
            inkCanvas.Width = right + 400;
        }
  1. 类似于 inkCanvas 的底部以增加高度。
var bottom = inkCanvas.InkPresenter.StrokeContainer.BoundingRect.Bottom;
            if (bottom > inkCanvas.ActualHeight - 400)
            {
                grdCan.Height = bottom + 400;
            }

问题是一样的,它没有自动滚动。

另外,为了在左侧添加空间,我使用了运行正常的 inkCanvas 的 flowcontrol 属性,但是对于在“顶部”位置添加空间,我没有解决方案。

任何帮助或指导将是非常可观的。

谢谢

更新:代码

<Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
            <InkToolbar Grid.Row="0" 
                        Margin="10"
                        x:Name="inkToolbar" 
                        VerticalAlignment="Top"
                        TargetInkCanvas="{x:Bind inkCanvas}">
            </InkToolbar>
            <ScrollViewer Grid.Row="1" 
                          x:Name="scrollViewer" 
                          ZoomMode="Enabled" 
                          MinZoomFactor="1" 
                          MaxZoomFactor="20"
                          VerticalScrollMode="Enabled" 
                          VerticalScrollBarVisibility="Auto" 
                          HorizontalScrollMode="Enabled" 
                          HorizontalScrollBarVisibility="Auto">
                <Grid Height="{Binding ElementName=scrollViewer, Path=ViewportHeight}"
                            Width="{Binding ElementName=scrollViewer, Path=ViewportWidth}">
                    <Canvas x:Name="recognitionCanvas"/>
                    <InkCanvas x:Name="inkCanvas"/>
                </Grid>
            </ScrollViewer>
        </Grid>
4

0 回答 0