mirror of
https://github.com/soukoku/ntwain.git
synced 2026-02-25 13:04:07 +08:00
Cleaned up wpf sample with some view models.
This commit is contained in:
96
Tests/Tester.WPF/TwainVM.cs
Normal file
96
Tests/Tester.WPF/TwainVM.cs
Normal file
@@ -0,0 +1,96 @@
|
||||
using NTwain;
|
||||
using NTwain.Data;
|
||||
using NTwain.Values;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using CommonWin32;
|
||||
using System.Threading;
|
||||
|
||||
namespace Tester.WPF
|
||||
{
|
||||
/// <summary>
|
||||
/// Wraps the twain session as a view model for databinding.
|
||||
/// </summary>
|
||||
class TwainVM : TwainSessionWPF
|
||||
{
|
||||
public TwainVM()
|
||||
: base(TWIdentity.CreateFromAssembly(DataGroups.Image | DataGroups.Audio, Assembly.GetEntryAssembly()))
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private ImageSource _image;
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the captured image.
|
||||
/// </summary>
|
||||
/// <value>
|
||||
/// The image.
|
||||
/// </value>
|
||||
public ImageSource Image
|
||||
{
|
||||
get { return _image; }
|
||||
set
|
||||
{
|
||||
_image = value;
|
||||
RaisePropertyChanged("Image");
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnTransferReady(TransferReadyEventArgs e)
|
||||
{
|
||||
// set it up to use file xfer
|
||||
|
||||
if (this.GetCurrentCap<XferMech>(CapabilityId.ICapXferMech) == XferMech.File)
|
||||
{
|
||||
var formats = this.CapGetImageFileFormat();
|
||||
var wantFormat = formats.Contains(FileFormat.Tiff) ? FileFormat.Tiff : FileFormat.Bmp;
|
||||
|
||||
var fileSetup = new TWSetupFileXfer
|
||||
{
|
||||
Format = wantFormat,
|
||||
FileName = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "test.tif")
|
||||
};
|
||||
var rc = this.DGControl.SetupFileXfer.Set(fileSetup);
|
||||
}
|
||||
base.OnTransferReady(e);
|
||||
}
|
||||
|
||||
protected override void OnDataTransferred(DataTransferredEventArgs e)
|
||||
{
|
||||
if (e.Data != IntPtr.Zero)
|
||||
{
|
||||
Image = e.Data.GetWPFBitmap();
|
||||
}
|
||||
else if (!string.IsNullOrEmpty(e.FilePath))
|
||||
{
|
||||
var img = new BitmapImage(new Uri(e.FilePath));
|
||||
Image = img;
|
||||
}
|
||||
base.OnDataTransferred(e);
|
||||
}
|
||||
|
||||
public void TestCapture(IntPtr hwnd)
|
||||
{
|
||||
if (State == 4)
|
||||
{
|
||||
if (this.CapGetPixelTypes().Contains(PixelType.BlackWhite))
|
||||
{
|
||||
this.CapSetPixelType(PixelType.BlackWhite);
|
||||
}
|
||||
|
||||
if (this.CapGetImageXferMechs().Contains(XferMech.File))
|
||||
{
|
||||
this.CapSetImageXferMech(XferMech.File);
|
||||
}
|
||||
|
||||
var rc = EnableSource(SourceEnableMode.NoUI, false, hwnd, SynchronizationContext.Current);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user