
In the Solution Explorer window, right-click on the References folder for the project and select Add Reference... from the context menu. In the Reference Manager dialog box, select Leadtools.Controls from the Windows=>Extension list.
Browse to the <LEADTOOLS_INSTALLDIR>\Bin\WinRT\ folder (depending on your target platform), and select the following .WINMD files:
[XAML]
<Page
x:Class="Updating_a_Guage.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Updating_a_Guage"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:custom="using:Leadtools.Controls"
mc:Ignorable="d">
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
<StackPanel>
<Button x:Name="_loadButton" Click="_loadButton_Click">Load</Button>
<Button x:Name="_cmdButton" Click="_cmdButton_Click">Command</Button>
<ProgressBar x:Name="_progress" Minimum="0" Maximum="100"></ProgressBar>
<custom:RasterImageViewer x:Name="_viewer"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
ImageHorizontalAlignment="Center"
ImageVerticalAlignment="Center"
SizeMode="Fit"
NewImageResetOptions="All"/>
</StackPanel>
</Grid>
</Page>
Double-click on the Package.appxmanifest file. On the Declarations tab, add the File Open Picker as a Supported Declaration. Also, check the Supports any file type checkbox.
Switch to MainPage.xaml code view (right-click Page.xaml in the solution explorer then select View Code) and add the following lines at the beginning of the file:
[C#]
using Windows.Storage;
using Windows.Storage.Pickers;
using Leadtools;
using Leadtools.Codecs;
using Leadtools.Converters;
using Leadtools.ImageProcessing;
using Leadtools.ImageProcessing.Core;
Add the following class function:
[C#]
private async void _loadButton_Click(object sender, RoutedEventArgs e)
{
FileOpenPicker openPicker = new FileOpenPicker();
openPicker.ViewMode = PickerViewMode.Thumbnail;
openPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
openPicker.FileTypeFilter.Add(".cmp");
openPicker.FileTypeFilter.Add(".jpg");
openPicker.FileTypeFilter.Add(".tif");
StorageFile file = await openPicker.PickSingleFileAsync();
if (null != file)
{
try
{
//Open the file as a WinRT RandomAccessStream and create an ILeadStream from this RandomAccessStream
ILeadStream leadStream = LeadStreamFactory.Create(file);
using (IDisposable disposable = leadStream as IDisposable)
{
using (RasterCodecs codecs = new RasterCodecs())
{
_viewer.Image = await codecs.LoadAsync(leadStream);
}
}
}
catch (Exception exception)
{
string message = exception.Message;
RasterException rasterException = RasterException.FromHResult(exception.HResult);
if (rasterException != null)
message = rasterException.Message;
System.Diagnostics.Debug.WriteLine(message);
}
}
}
Add the following code to the MainPage class:
[C#]
private RasterImage _image;
private bool _cancel;
private void _cancelButton_Click(object sender, RoutedEventArgs e)
{
_cancel = true;
}
private async void _cmdButton_Click(object sender, RoutedEventArgs e)
{
_image = _viewer.Image.Clone();
await Task.Run(() =>
{
MedianCommand cmd = new MedianCommand(40);
cmd.Progress += cmd_Progress;
_cancel = false;
try
{
cmd.Run(_image);
}
catch (Exception err)
{
string message = err.Message;
RasterException rasterException = RasterException.FromHResult(err.HResult);
if (rasterException != null)
message = rasterException.Message;
System.Diagnostics.Debug.WriteLine(message);
}
finally
{
cmd.Progress -= cmd_Progress;
}
});
if(_cancel != true)
await _viewer.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,
() =>
{
_viewer.Image = _image;
});
}
async void cmd_Progress(object sender, RasterCommandProgressEventArgs e)
{
await _progress.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,
() =>
{
e.Cancel = _cancel;
_progress.Value = e.Percent;//update progress bar
});
}
Build, and Run the program to test it.
NOTE: If you encounter an "Invalid File Format" or "Feature Not Supported" exception, please refer to the topic Invalid File Format/Feature Not Supported.