Я могу представить два разных сценария, которые могут подтолкнуть вас к этому вопросу:
- Приложению по какой-то причине необходимо сохранить файл, но пользователю не нужно об этом знать.
- Вы хотите, чтобы пользователь знал и мог получить доступ к файлу.
В первом сценарии, я полагаю, вам все равно, какой путь вы используете, поэтому вы можете использовать папку, в которой хранятся данные приложения:
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;
}
В обработчике события нажатия кнопки «Сохранить» вы меняете только место извлечения файла, остальное остается как в пример:
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>
person
F. Renato
schedule
29.11.2019