最近因为项目需要,接触到Winform中的扫描仪功能,在网上查了一些资料,终于算是把这功能给实现了,现把过程描述一遍,希望对某些朋友有所帮助。。。(哦,对了,顺便提一下,我是用了Kodak组件实现的)
1.先从网上下载Kodak组件,总共有十来个.dll .OCX文件,我们只需用到其中的两个就OK了。
2.打开你的项目,先引用IMGEDIT.OCX和IMGSCAN.OCX。(如果引用时有问题,得在“运行”里用命令“regsvr32.exe ”执行一下)。
3.在开始位置引用命名空间:using ScanLibCtl;
4.在工具箱,选择项里添加控件“kodak图像扫描控件”,默认名称是axImgScan1。
5.好了,以上弄好后就可以开始写代码了:
axImgScan1.ShowSelectScanner();//选择扫描仪
int ll_rtn = axImgScan1.OpenScanner(); //打开扫描仪
if (ll_rtn == 0)
{
if (axImgScan1.ScannerAvailable() == true)//判断扫描仪是否可用
{
axImgScan1.MultiPage = true;//是否多页
axImgScan1.PageCount = axImgScan1.PageCount + 1;
string pathGen = @"f:/aaa";
string paths = pathGen+"\\app.path" + "UN";
axImgScan1.Image = paths;
axImgScan1.FileType = FileTypeConstants.BMP_Bitmap;//设置文件类型
axImgScan1.CompressionType = CompressionTypeConstants.JPEG;
axImgScan1.ScanTo = ScanToConstants.DisplayAndUseFileTemplate;
axImgScan1.SetPageTypeCompressionOpts(CompPreferenceConstants.GoodDisplay, ImageTypeConstants.BlackAndWhite1Bit, CompTypeConstants.JPEGCompression, CompInfoConstants.G31DFaxRBO);
axImgScan1.StopScanBox = false;
axImgScan1.ShowSetupBeforeScan = true;//是否在扫描前显示设置界面
axImgScan1.Show();
ll_rtn = axImgScan1.StartScan();//开始扫描
if (ll_rtn == 9254 || ll_rtn == 0) { }
else
{
MessageBox.Show("扫描仪没有正确连接或扫描控件已破坏,请检查!", "系统提示");
}
axImgScan1.CloseScanner(); //关闭扫描仪 }
else
{
MessageBox.Show( "扫描仪没有正确连接,请重新设置!","系统提示");
}
}
else if (ll_rtn == 9219)
{
MessageBox.Show("系统没有安装扫描仪或扫描仪没有正确连接!", "系统提示");
}