如何在Universal Apps中的MS Edge中通过网页书写笔记?InkCanvas over WebView
如果你不熟悉Edge:你可以激活'笔记面板'并写一些笔记,但是你也可以在写笔记的时候在页面上滚动。
我该怎么办?
如何在Universal Apps中的MS Edge中通过网页书写笔记?InkCanvas over WebView
如果你不熟悉Edge:你可以激活'笔记面板'并写一些笔记,但是你也可以在写笔记的时候在页面上滚动。
我该怎么办?
好了,在结束它并不难。这里是代码片段和概念验证解决方案是on GitHub。 但首先要事。
1)XAML - WebView必须位于顶端;在WebView下隐藏InkCanvas和Rectangle来绘制最终的网页截图。
<ScrollViewer>
<WebView Grid.Row="0" x:Name="WebView" />
</ScrollViewer>
<ScrollViewer Grid.Row="0" x:Name="ScrollPainter" Visibility="Collapsed" VerticalScrollMode="Enabled" VerticalScrollBarVisibility="Auto" HorizontalScrollMode="Enabled" HorizontalScrollBarVisibility="Auto" ZoomMode="Enabled" MinZoomFactor="1">
<Grid>
<Rectangle x:Name="Painter" />
<InkCanvas x:Name="InkCanvas" />
</Grid>
</ScrollViewer>
2)后面的代码(为简单起见) - 被分离到更多的步骤,但THA主要的想法很简单:当用户开始写/画笔记,然后捕获网页的截图,并将其绘制成矩形和隐藏的WebView 。
private async Task CaptureWebView()
{
int width;
int height;
var originalWidth = WebView.ActualWidth;
var originalHeight = WebView.ActualHeight;
var widthString = await WebView.InvokeScriptAsync("eval", new[] { "document.body.scrollWidth.toString()" });
var heightString = await WebView.InvokeScriptAsync("eval", new[] { "document.body.scrollHeight.toString()" });
if (!int.TryParse(widthString, out width))
{
throw new Exception("Unable to get page width");
}
if (!int.TryParse(heightString, out height))
{
throw new Exception("Unable to get page height");
}
// resize the webview to the content
WebView.Width = width;
WebView.Height = height;
var brush = new WebViewBrush();
brush.SetSource(WebView);
Painter.Width = width;
Painter.Height = height;
Painter.Fill = brush;
}
尝试使用InkCanvas的实验室解决方案 - 它包含一个文件,您可以下载和示例代码。 https://github.com/Windows-Readiness/WinDevHOLs/tree/master/06B%20Inking
一个简短的解释:你会在你的XAML创建一个InkCanvas
<InkCanvas x:Name="InkCanvas" />
你可能希望你的画布上接受鼠标和触摸输入:
public MainPage()
{
this.InitializeComponent();
InkCanvas.InkPresenter.InputDeviceTypes =
Windows.UI.Core.CoreInputDeviceTypes.Mouse |
Windows.UI.Core.CoreInputDeviceTypes.Pen |
Windows.UI.Core.CoreInputDeviceTypes.Touch;
}
嘿阿曼达,谢谢你的回复,但我认为我们不相互理解。该实验室只是为了创建MS Paint,就像应用程序一样,我需要更像Edge的应用程序。我和Edge一起玩Edge,Edge和Edge以这种方式工作:Edge创建当前网络的捕获并将其保存为图像以驱动,并将其切换为InkCanvas,并且我也做了同样的事情...最终解决方案我可以将它放在github上并发布链接,如果你想... –
是的,我想我不明白的区别。您可以将inkcanvas作为控件添加到您制作的任何应用程序中。所以你也想在你的应用程序中创建一个screencapture,然后切换到墨迹? –