UWP InkCanvasを使用して1つのUWP Appをロードして保存ボタンを使用しています。私は1つのラップトップ上でアプリを使って描画を行い、インクをgif(+埋め込みisf)として保存し、gifファイルを別のラップトップに送り、それを試してみました。PCを切り替えるときにInkCanvasの線が適切な境界線でレンダリングされない
同じアプリでこの別のラップトップでインクを開くと、画面に合わない場合と同じように、境界線に描画がクリッピングされます。おそらくラップトップの画面サイズが小さいためです。
InkCanvas全体をScrollviewerでカプセル化してサイズを変更しようとしましたが、描画がInkCanvasズームに従っているため、境界線で描画が残っています。 InkCanvasのレンダートランスフォームと同じです。また、インクをロードするときにStrokeContainerのコピー貼り付けメソッドを試しました。それはうまく動作せず、さらに、すべてのストロークをループして選択して貼り付ける必要があるため、かさばることがわかります。
私は、ラップトップの画面のサイズに関係なく、InkCanvas(推奨)またはStrokesのサイズを自動的にInkCanvas上に表示するように、自動的にサイズを変更する方法を検討しています。私はこれがデフォルトで起こることを期待していましたが、いくぶんそうではありません。私が使用するコードは非常にシンプルですが
は、私はスタートとして、それを提供します。
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid Background="White" Grid.Row="1">
<InkCanvas x:Name="inkCanvas"/>
</Grid>
<StackPanel>
<Button Content="Load" Click="LoadButton_Click"/>
<Button Content="Save" Click="SaveButton_Click"/>
</StackPanel>
</Grid>
private async void LoadButton_Click(object sender, RoutedEventArgs e)
{
FileOpenPicker openPicker = new FileOpenPicker();
openPicker.FileTypeFilter.Clear();
openPicker.FileTypeFilter.Add(".isf");
openPicker.FileTypeFilter.Add(".gif");
openPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
StorageFile file = await openPicker.PickSingleFileAsync();
if (file != null)
{
IRandomAccessStream stream = await file.OpenAsync(FileAccessMode.Read);
using (var inputStream = stream.GetInputStreamAt(0))
{
await inkCanvas.InkPresenter.StrokeContainer.LoadAsync(inputStream);
}
stream.Dispose();
}
}
'SaveButton_Click'イベントハンドラも含めることができますか? – Laith