如何在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,然後切換到墨跡? –