using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Runtime.InteropServices;
using WIALib;
namespace WIAWrapper
{
/// <summary>
/// This is a simple wrapper around WIA.
/// </summary>
public class Scanner
{
public class AcquireEventArgs : EventArgs
{
public Image Image { get; internal set; }
}
object selectUsingUI = System.Reflection.Missing.Value;
ItemClass wiaRoot;
WIALib.WiaClass wiaManager;
public Scanner()
{
wiaManager = new WIALib.WiaClass();
wiaRoot = (ItemClass)wiaManager.Create(ref selectUsingUI);
}
/// <summary>
/// Acquires the images.
/// </summary>
public void AcquireImages()
{
List<Image> retVal = new List<Image>();
CollectionClass wiaPics = wiaRoot.GetItemsFromUI(WiaFlag.SingleImage, WiaIntent.ImageTypeColor) as CollectionClass;
wiaManager.OnTransferComplete += new _IWiaEvents_OnTransferCompleteEventHandler(wiaManager_OnTransferComplete);
foreach (object wiaObj in wiaPics)
{
ItemClass wiaItem = (ItemClass)Marshal.CreateWrapperOfType(wiaObj, typeof(ItemClass));
string imgFile = Path.GetTempFileName();
wiaItem.Transfer(imgFile, true);
}
}
public event EventHandler<AcquireEventArgs> ImageScanned;
/// <summary>
/// Wias the manager_ on transfer complete.
/// </summary>
/// <param name="Item">The item.</param>
/// <param name="Path">The path.</param>
void wiaManager_OnTransferComplete(Item Item, string Path)
{
if (ImageScanned != null)
{
AcquireEventArgs e = new AcquireEventArgs();
e.Image = new Bitmap(Path);
ImageScanned(this, e);
}
}
}
}
No comments:
Post a Comment