我可以想象两种不同的情况会把你推向这个问题:
-
由于某种原因,应用程序需要存储文件,但用户不需要知道它。
-
您希望用户知道并能够访问该文件。
在第一个场景中,我假设您不在乎使用哪条路径,因此可以使用存储应用程序数据的文件夹:
var selectedFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
在第二种情况下,您可以让用户选择路径,然后每次单击“保存”按钮时,您都可以自动保存图像:
private async void btnSelectFolder_Click(object sender, RoutedEventArgs e)
{
var picker = new FolderPicker();
picker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.Desktop;
picker.FileTypeFilter.Add("*");
selectedFolder = await picker.PickSingleFolderAsync();
TxbFolder.Text = selectedFolder.Path;
}
在“保存”按钮的“单击”事件处理程序中,您只更改检索文件的位置,其余的保持为
example
:
private async void btnSave_Click(object sender, RoutedEventArgs e)
{
// Get all strokes on the InkCanvas.
IReadOnlyList<InkStroke> currentStrokes = inkCanvas.InkPresenter.StrokeContainer.GetStrokes();
// Strokes present on ink canvas.
if (currentStrokes.Count > 0)
{
var file = await selectedFolder.CreateFileAsync("InkSample.gif", CreationCollisionOption.GenerateUniqueName);
if (file != null)
{
// The rest remains the same as in the example
// ...
}
}
}
下面是修改的XAML代码和主页构造函数:
private StorageFolder selectedFolder;
public MainPage()
{
this.InitializeComponent();
// Set supported inking device types.
inkCanvas.InkPresenter.InputDeviceTypes =
Windows.UI.Core.CoreInputDeviceTypes.Mouse |
Windows.UI.Core.CoreInputDeviceTypes.Pen;
// Listen for button click to initiate save.
btnSave.Click += btnSave_Click;
// Listen for button click to clear ink canvas.
btnClear.Click += btnClear_Click;
btnSelectFolder.Click += btnSelectFolder_Click;
selectedFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
TxbFolder.Text = selectedFolder.Path;
}
XAML
<Grid
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<StackPanel x:Name="HeaderPanel" Orientation="Horizontal" Grid.Row="0">
<TextBlock x:Name="Header"
Text="Basic ink store sample"
Style="{ThemeResource HeaderTextBlockStyle}"
Margin="10,0,0,0" />
<TextBox x:Name="TxbFolder"
Text="Select a folder"
Width="250"
Margin="24,12,10,12"/>
<Button x:Name="btnSelectFolder"
Content="..."
Margin="0,0,10,0"/>
<Button x:Name="btnSave"
Content="Save"
Margin="24,0,10,0"/>
<Button x:Name="btnClear"
Content="Clear"
Margin="24,0,10,0"/>
</StackPanel>
<Grid Grid.Row="1">
<InkCanvas x:Name="inkCanvas" />
</Grid>