Files
SDL/VERAG_PROG_ALLGEMEIN/frmScan.vb

645 lines
26 KiB
VB.net

Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Text
Imports System.Windows.Forms
Imports System.Runtime.InteropServices
Imports System.Threading
'Imports Dynamsoft.Barcode
Imports Dynamsoft.TWAIN
Imports Dynamsoft.Core
'Imports Dynamsoft.UVC
'Imports Dynamsoft.OCR
Imports Dynamsoft.PDF
Imports Dynamsoft.Core.Annotation
'Imports Dynamsoft.UVC.Common
Imports Dynamsoft.TWAIN.Interface
Imports Dynamsoft.Core.Enums
Imports System.IO
Public Class frmScan
Inherits Form
Implements IAcquireCallback
Implements IConvertCallback
Implements ISave
Private m_StrProductKey As String
Private m_TwainManager As TwainManager = Nothing
Private m_ImageCore As ImageCore = Nothing
Private m_PDFRasterizer As PDFRasterizer = Nothing
Private m_PDFCreator As PDFCreator = Nothing
Private Delegate Sub CrossThreadOperationControl()
' Public KdNr As Integer = -1
Public ART As String = ""
Public ORDNER As String = ""
Public ReturnValue As Object = Nothing
Public fileName As String = ""
Public DefaultFileName = ""
'Dim DS As New cDATENSERVER
Sub New(ART)
' Dieser Aufruf ist für den Designer erforderlich.
InitializeComponent()
' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
Me.ART = ART
init()
End Sub
Public Sub OnPostAllTransfers() Implements IAcquireCallback.OnPostAllTransfers
Me.Invoke(New CrossThreadOperationControl(AddressOf CallMe))
End Sub
Public Sub CallMe()
dsViewer.Visible = True
checkImageCount()
' EnableControls(picboxScan)
End Sub
Public Sub OnPreAllTransfers() Implements IAcquireCallback.OnPreAllTransfers
End Sub
Public Sub LoadConvertResult(result As ConvertResult) Implements IConvertCallback.LoadConvertResult
m_ImageCore.IO.LoadImage(result.Image)
m_ImageCore.ImageBuffer.SetMetaData(m_ImageCore.ImageBuffer.CurrentImageIndexInBuffer, EnumMetaDataType.enumAnnotation, result.Annotations, True)
End Sub
Public Function GetAnnotations(iPageNumber As Integer) As Object Implements ISave.GetAnnotations
If chkMultiPage.Checked = True Then
Return m_ImageCore.ImageBuffer.GetMetaData(CShort(iPageNumber), EnumMetaDataType.enumAnnotation)
Else
Return m_ImageCore.ImageBuffer.GetMetaData(m_ImageCore.ImageBuffer.CurrentImageIndexInBuffer, EnumMetaDataType.enumAnnotation)
End If
End Function
Public Function GetImage(iPageNumber As Integer) As Bitmap Implements ISave.GetImage
If chkMultiPage.Checked = True Then
Return m_ImageCore.ImageBuffer.GetBitmap(CShort(iPageNumber))
Else
Return m_ImageCore.ImageBuffer.GetBitmap(m_ImageCore.ImageBuffer.CurrentImageIndexInBuffer)
End If
End Function
Public Function GetPageCount() As Integer Implements ISave.GetPageCount
If chkMultiPage.Checked = True Then
Return m_ImageCore.ImageBuffer.HowManyImagesInBuffer
Else
Return 1
End If
End Function
Public Function OnPreTransfer() As Boolean Implements IAcquireCallback.OnPreTransfer
Return True
End Function
Public Sub OnSourceUIClose() Implements IAcquireCallback.OnSourceUIClose
End Sub
'
Public Sub OnTransferCancelled() Implements IAcquireCallback.OnTransferCancelled
End Sub
Public Sub OnTransferError() Implements IAcquireCallback.OnTransferError
End Sub
Public Function OnPostTransfer(bit As Bitmap) As Boolean Implements IAcquireCallback.OnPostTransfer
m_ImageCore.IO.LoadImage(bit)
Return True
End Function
Public Sub New()
InitializeComponent()
init()
End Sub
Sub init()
Dim LICENSE_KEY_PDF = "f0068WQAAAH+gY718ZLeqQLD8lbOZ2FGn4EwqZXwHfnnHFla7+8MQS5/qOwvtYLWLNCl4FRxs5YG2tso5CsxMGiwxi1RLj1Q="
Dim LICENSE_KEY = "f0068NQAAAMzfp6Gvu6Fz+I1fe35VMbxq4AjxirlBtKiw2m/c7+WFUo6cqKV9gdsrUF08tMFDzxyvK2qW7dkB/AMXwWP8+VE=" ' "f0068NQAAALO56JsMvaoZUvgW4W5pH3xZI04YVLRm6RjxrXBNGlXQX66fwwyD9MA7RooXB8R7IGVCGOs0LoQrz74BFUWxuTY=" '"t0068MgAAAIJug/9puT32C74ZTQ22FzetJ8QgWhH3CpvWhJ98JT07diK2qayDBNOEoyk+wYbapUbYlgyAVhm8wuu4zvTLfkw="
' Dim LICENSE_KEY_PDF = "t0068MgAAAIJug/9puT32C74ZTQ22FzetJ8QgWhH3CpvWhJ98JT07diK2qayDBNOEoyk+wYbapUbYlgyAVhm8wuu4zvTLfkw="
' Dim LICENSE_KEY = "t0068MgAAAIJug/9puT32C74ZTQ22FzetJ8QgWhH3CpvWhJ98JT07diK2qayDBNOEoyk+wYbapUbYlgyAVhm8wuu4zvTLfkw=" '""
'm_StrProductKey = ConbineLicense(ReadLocalLicense(Application.StartupPath & "\Lizenzen\DynamsoftDotNetTwain.lic")) ' In Projekt SDL / Lizenzen / DynamsoftDotNetTwain.lic
m_TwainManager = New TwainManager(LICENSE_KEY)
m_PDFRasterizer = New PDFRasterizer(LICENSE_KEY)
m_PDFCreator = New PDFCreator(LICENSE_KEY_PDF)
m_ImageCore = New ImageCore()
dsViewer.Bind(m_ImageCore)
End Sub
<DllImport("kernel32.dll")> _
Private Shared Function GetSystemDirectory(<Out> lpBuffer As StringBuilder, uSize As UInteger) As UInteger
End Function
<DllImport("kernel32.dll")> _
Private Shared Function GetWindowsDirectory(<Out> lpBuffer As StringBuilder, uSize As UInteger) As UInteger
End Function
Public Function GetLicenseFilePath() As String
Return Application.StartupPath & "\Lizenzen\DynamsoftDotNetTwain.lic"
Dim sbsSystemDir As New StringBuilder(256)
Dim iLength As UInteger = 0
iLength = GetSystemDirectory(sbsSystemDir, 256)
If iLength = 0 Then
Return Nothing
End If
Dim sbsWindowsDir As New StringBuilder(256)
iLength = GetWindowsDirectory(sbsWindowsDir, 256)
If iLength = 0 Then
Return Nothing
End If
If sbsWindowsDir.Length > 0 Then
If IntPtr.Size = 8 Then
sbsWindowsDir.Append("\SysWOW64\DynamsoftDotNetTwain.lic")
Else
sbsWindowsDir.Append("\System32\DynamsoftDotNetTwain.lic")
End If
End If
Return sbsWindowsDir.ToString()
End Function
Private Function ReadLocalLicense(licensePath As String) As List(Of String)
Dim tempListLicense As List(Of String) = Nothing
Try
If File.Exists(licensePath) Then
Dim tempAllLines As String() = File.ReadAllLines(licensePath)
For Each temp As String In tempAllLines
Dim iTempIndex As Integer = temp.IndexOf("SerialNo")
If iTempIndex <> -1 Then
Dim iIndex1 As Integer = temp.IndexOf("=")
If iIndex1 <> -1 Then
If tempListLicense Is Nothing Then
tempListLicense = New List(Of String)()
End If
Dim tempLicense As String = temp.Substring((iIndex1 + 1), (temp.Length - (iIndex1 + 1)))
tempListLicense.Add(tempLicense)
End If
End If
Next
End If
Catch
End Try
Return tempListLicense
End Function
Private Function ConbineLicense(listlicensePath As List(Of String)) As String
Dim tempLicenseFilePath As String = GetLicenseFilePath()
Dim tempListLicense As List(Of String) = ReadLocalLicense(tempLicenseFilePath)
Dim tempProductKey As String = m_StrProductKey
If tempListLicense IsNot Nothing Then
For Each temp As String In tempListLicense
If temp IsNot Nothing Then
If Not m_StrProductKey.Equals(temp) Then
tempProductKey = (tempProductKey & Convert.ToString(";")) + temp.ToString()
End If
End If
Next
End If
Return tempProductKey
End Function
'here, i need to set a callback function that will be called when the time elapse.
Private Sub callbk()
'code here will be executed when the time elapse
'Threading.Thread.Abort(thread)
thread.Abort()
End Sub
Dim thread As Threading.Thread
Private Sub startScanTimeout()
'setup a timeout here to call the sub callbk when the time elapse.
'for example, something like this
thread = New Threading.Thread(AddressOf startScan)
Dim tcb As TimerCallback = AddressOf callbk
Dim t As Threading.Timer = New Threading.Timer(tcb, Nothing, 5000, -1)
'the first argument is the time interval in milliseconds while the second argument is the function to callback after the period of 5 seconds
thread.Start()
'While True
' startScan()
'End While
End Sub
Private Sub picboxScan_Click(sender As Object, e As EventArgs) Handles btnScan.Click
'startScanTimeout()
startScan()
End Sub
Sub startScan()
Me.Cursor = Cursors.WaitCursor
pnl.Enabled = False
If Me.cboSource.SelectedIndex < 0 Then
MessageBox.Show(Me, "Es wurde kein Scanner gefunden!", "Information")
Else
Try
Dim sSourceIndex As Short = 0
sSourceIndex = CShort(cboSource.SelectedIndex)
Dim sTwainSourceCount As Short = m_TwainManager.SourceCount
Dim sCameraSourceCount As Short = 0
If sSourceIndex < sTwainSourceCount Then
m_TwainManager.SelectSourceByIndex(sSourceIndex)
m_TwainManager.OpenSource()
' m_TwainManager.IfShowUI = chkShowUI.Checked
' m_TwainManager.IfFeederEnabled = chkADF.Checked
' m_TwainManager.IfDuplexEnabled = chkDuplex.Checked
m_TwainManager.IfDisableSourceAfterAcquire = True
m_TwainManager.IfShowUI = chkShowUI.Checked
Select Case cbxEinzug.CheckState
Case CheckState.Indeterminate
If m_TwainManager.IfPaperDetectable AndAlso m_TwainManager.IfFeederLoaded Then
m_TwainManager.IfFeederEnabled = True
Else
m_TwainManager.IfFeederEnabled = False
End If
' m_TwainManager.IfAutoFeed = True
Case CheckState.Checked : m_TwainManager.IfFeederEnabled = True
Case Not CheckState.Checked : m_TwainManager.IfFeederEnabled = False
End Select
If rdbtnBW.Checked Then
m_TwainManager.PixelType = Dynamsoft.TWAIN.Enums.TWICapPixelType.TWPT_BW
m_TwainManager.BitDepth = 1
ElseIf rdbtnGray.Checked Then
m_TwainManager.PixelType = Dynamsoft.TWAIN.Enums.TWICapPixelType.TWPT_GRAY
m_TwainManager.BitDepth = 8
Else
m_TwainManager.PixelType = Dynamsoft.TWAIN.Enums.TWICapPixelType.TWPT_RGB
m_TwainManager.BitDepth = 24
End If
m_TwainManager.Resolution = Integer.Parse(cboResolution.Text)
'm_TwainManager.sca()
m_TwainManager.AcquireImage(TryCast(Me, IAcquireCallback))
Else
Dim sCameraIndex As Short = CShort(sSourceIndex - sTwainSourceCount)
End If
Catch exp As Exception
'EnableControls(picboxScan);
MsgBox("Scanner nicht verfügbar!")
Finally
' EnableControls(picboxScan)
m_TwainManager.Dispose()
pnl.Enabled = True
Me.Cursor = Cursors.Default
End Try
dsViewer.Visible = True
checkImageCount()
End If
pnl.Enabled = True
Me.Cursor = Cursors.Default
End Sub
Private Sub btn_Click(sender As Object, e As EventArgs)
Dim tempList As New List(Of String)()
For i As Integer = 0 To m_TwainManager.SourceCount - 1
tempList.Add(m_TwainManager.SourceNameItems(CShort(i)))
Next
Dim tempSourceListWrapper As New SourceListWrapper(tempList)
Dim iSelectIndex As Integer = tempSourceListWrapper.SelectSource()
If iSelectIndex = -1 Then
Return
Else
m_TwainManager.IfDisableSourceAfterAcquire = True
m_TwainManager.IfShowUI = True
m_TwainManager.SelectSourceByIndex(CShort(iSelectIndex))
m_TwainManager.AcquireImage(TryCast(Me, IAcquireCallback))
End If
End Sub
Private Sub InitDefaultValueForTWAIN()
Try
dsViewer.IfFitWindow = True
dsViewer.MouseShape = False
dsViewer.SetViewMode(-1, -1)
' Me.cbxViewMode.SelectedIndex = 0
' Init the sources for TWAIN scanning and Webcam grab, show in the cbxSources controls
If m_TwainManager.SourceCount > 0 Then
Dim hasTwainSource As Boolean = False
Dim hasWebcamSource As Boolean = False
cboSource.Items.Clear()
For i As Integer = 0 To m_TwainManager.SourceCount - 1
cboSource.Items.Add(m_TwainManager.SourceNameItems(CShort(i)))
'else if (enumDeviceType == Dynamsoft.DotNet.TWAIN.Enums.EnumDeviceType.SDT_WEBCAM)
' hasWebcamSource = true;
hasTwainSource = True
Next
If hasTwainSource Then
cboSource.Enabled = True
' chkShowUI.Enabled = True
' chkADF.Enabled = True
' chkDuplex.Enabled = True
' cbxResolution.Enabled = True
' rdbtnGray.Checked = True
' cbxResolution.SelectedIndex = 0
' EnableControls(Me.picboxScan)
End If
End If
Dim iSourceCount As Integer = 0
Catch ex As System.Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Private Sub cboSource_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboSource.SelectedIndexChanged, cboResolution.SelectedIndexChanged
Dim sIndex As Short = CShort(DirectCast(sender, ComboBox).SelectedIndex)
If sIndex < m_TwainManager.SourceCount Then
btnScan.Enabled = True
m_TwainManager.CloseSource()
Else
btnScan.Enabled = False
End If
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btn.Click
' If KdNr < 0 Then Exit Sub
Try
Select Case ART
Case "DirectScan"
Dim PDF_bytes As Byte() = m_PDFCreator.SaveAsBytes(TryCast(Me, ISave))
Me.fileName = tbxSaveFileName.Text ' DS.LAST_ID
Me.ReturnValue = PDF_bytes ' DS.LAST_ID
Me.DialogResult = Windows.Forms.DialogResult.OK
Case Else : saveToFile()
End Select
Catch ex As Exception
MsgBox(ex.Message)
pnl.Enabled = True
End Try
End Sub
Sub saveToFile()
Try
Dim SaveFileDialog As New SaveFileDialog
' Dim fileName As String = "" ' tbxSaveFileName.Text.Trim()
' Dim SaveFileDialog
Dim fileName As String = tbxSaveFileName.Text.Trim()
If VerifyFileName(fileName) Then
SaveFileDialog.FileName = Me.tbxSaveFileName.Text
If rdbtnJPG.Checked Then
SaveFileDialog.Filter = "JPEG|*.JPG;*.JPEG;*.JPE;*.JFIF"
SaveFileDialog.DefaultExt = "jpg"
If SaveFileDialog.ShowDialog() = DialogResult.OK Then
m_ImageCore.IO.SaveAsJPEG(SaveFileDialog.FileName, m_ImageCore.ImageBuffer.CurrentImageIndexInBuffer)
End If
End If
If rdbtnBMP.Checked Then
SaveFileDialog.Filter = "BMP|*.BMP"
SaveFileDialog.DefaultExt = "bmp"
If SaveFileDialog.ShowDialog() = DialogResult.OK Then
m_ImageCore.IO.SaveAsBMP(SaveFileDialog.FileName, m_ImageCore.ImageBuffer.CurrentImageIndexInBuffer)
End If
End If
If rdbtnPNG.Checked Then
SaveFileDialog.Filter = "PNG|*.PNG"
SaveFileDialog.DefaultExt = "png"
If SaveFileDialog.ShowDialog() = DialogResult.OK Then
m_ImageCore.IO.SaveAsPNG(SaveFileDialog.FileName, m_ImageCore.ImageBuffer.CurrentImageIndexInBuffer)
End If
End If
If rdbtnTIFF.Checked Then
SaveFileDialog.Filter = "TIFF|*.TIF;*.TIFF"
SaveFileDialog.DefaultExt = "tiff"
If SaveFileDialog.ShowDialog() = DialogResult.OK Then
' Multi page TIFF
Dim tempListIndex As New List(Of Short)()
If chkMultiPage.Checked = True Then
For sIndex As Short = 0 To m_ImageCore.ImageBuffer.HowManyImagesInBuffer - 1
tempListIndex.Add(sIndex)
Next
Else
tempListIndex.Add(m_ImageCore.ImageBuffer.CurrentImageIndexInBuffer)
End If
m_ImageCore.IO.SaveAsTIFF(SaveFileDialog.FileName, tempListIndex)
End If
End If
If rdbtnPDF.Checked Then
SaveFileDialog.Filter = "PDF|*.PDF"
SaveFileDialog.DefaultExt = "pdf"
If SaveFileDialog.ShowDialog() = DialogResult.OK Then
' Multi page PDF
m_PDFCreator.Save(TryCast(Me, ISave), SaveFileDialog.FileName)
End If
End If
Else
Me.tbxSaveFileName.Focus()
End If
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Private Function VerifyFileName(fileName As String) As Boolean
Try
If fileName.LastIndexOfAny(System.IO.Path.GetInvalidFileNameChars()) = -1 Then
Return True
End If
Catch e As Exception
End Try
MessageBox.Show("The file name contains invalid chars!", "Save Image To File", MessageBoxButtons.OK, MessageBoxIcon.Information)
Return False
End Function
Private Sub picboxRotateLeft_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim iImageWidth As Integer = m_ImageCore.ImageBuffer.GetBitmap(m_ImageCore.ImageBuffer.CurrentImageIndexInBuffer).Width
Dim iImageHeight As Integer = m_ImageCore.ImageBuffer.GetBitmap(m_ImageCore.ImageBuffer.CurrentImageIndexInBuffer).Height
Dim tempListAnnotation As List(Of AnnotationData) = DirectCast(m_ImageCore.ImageBuffer.GetMetaData(m_ImageCore.ImageBuffer.CurrentImageIndexInBuffer, EnumMetaDataType.enumAnnotation), List(Of AnnotationData))
If tempListAnnotation IsNot Nothing AndAlso tempListAnnotation.Count <> 0 Then
For Each tempAnnotation As AnnotationData In tempListAnnotation
Dim x As Integer = tempAnnotation.Location.Y
Dim y As Integer = iImageWidth - (tempAnnotation.EndPoint.X)
Dim iWidth As Integer = (tempAnnotation.EndPoint.Y - tempAnnotation.StartPoint.Y)
Dim iHeight As Integer = (tempAnnotation.EndPoint.X - tempAnnotation.StartPoint.X)
Select Case tempAnnotation.AnnotationType
'case AnnotationType.enumLine:
Case AnnotationType.enumEllipse, AnnotationType.enumRectangle, AnnotationType.enumText
tempAnnotation.StartPoint = New Point(x, y)
'tempAnnotation.Size = new Size(iWidth, iHeight);
tempAnnotation.EndPoint = New Point((tempAnnotation.StartPoint.X + iWidth), (tempAnnotation.StartPoint.Y + iHeight))
Exit Select
Case AnnotationType.enumLine
Dim startPoint As Point = tempAnnotation.StartPoint
x = startPoint.Y
y = iImageWidth - startPoint.X
tempAnnotation.StartPoint = New Point(x, y)
Dim endPoint As Point = tempAnnotation.EndPoint
x = endPoint.Y
y = iImageWidth - endPoint.X
tempAnnotation.EndPoint = New Point(x, y)
Exit Select
End Select
Next
End If
m_ImageCore.ImageBuffer.SetMetaData(m_ImageCore.ImageBuffer.CurrentImageIndexInBuffer, EnumMetaDataType.enumAnnotation, tempListAnnotation, True)
m_ImageCore.ImageProcesser.RotateLeft(m_ImageCore.ImageBuffer.CurrentImageIndexInBuffer)
End Sub
Private Sub picboxRotateRight_Click(sender As Object, e As EventArgs) Handles Button3.Click
Dim iImageWidth As Integer = m_ImageCore.ImageBuffer.GetBitmap(m_ImageCore.ImageBuffer.CurrentImageIndexInBuffer).Width
Dim iImageHeight As Integer = m_ImageCore.ImageBuffer.GetBitmap(m_ImageCore.ImageBuffer.CurrentImageIndexInBuffer).Height
Dim tempListAnnotation As List(Of AnnotationData) = DirectCast(m_ImageCore.ImageBuffer.GetMetaData(m_ImageCore.ImageBuffer.CurrentImageIndexInBuffer, EnumMetaDataType.enumAnnotation), List(Of AnnotationData))
For Each tempAnnotation As AnnotationData In tempListAnnotation
Dim x As Integer = iImageHeight - (tempAnnotation.Location.Y + tempAnnotation.Size.Height)
Dim y As Integer = tempAnnotation.Location.X
Dim iWidth As Integer = tempAnnotation.Size.Height
Dim iHeight As Integer = tempAnnotation.Size.Width
Select Case tempAnnotation.AnnotationType
'case AnnotationType.enumLine:
Case AnnotationType.enumEllipse, AnnotationType.enumRectangle, AnnotationType.enumText
tempAnnotation.StartPoint = New Point(x, y)
tempAnnotation.EndPoint = New Point((tempAnnotation.StartPoint.X + iWidth), (tempAnnotation.StartPoint.Y + iHeight))
Exit Select
Case AnnotationType.enumLine
Dim startPoint As Point = tempAnnotation.StartPoint
x = iImageHeight - startPoint.Y
y = startPoint.X
tempAnnotation.StartPoint = New Point(x, y)
Dim endPoint As Point = tempAnnotation.EndPoint
x = iImageHeight - endPoint.Y
y = endPoint.X
tempAnnotation.EndPoint = New Point(x, y)
Exit Select
End Select
Next
m_ImageCore.ImageProcesser.RotateRight(m_ImageCore.ImageBuffer.CurrentImageIndexInBuffer)
End Sub
Private Sub frmScan_Load(sender As Object, e As EventArgs) Handles Me.Load
InitDefaultValueForTWAIN()
cboResolution.Text = 150
tbxSaveFileName.Text = DefaultFileName
Select Case ART
Case "DirectScan"
grpTyp.Visible = False
End Select
End Sub
Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
Dim zoom As Single = dsViewer.Zoom + 0.1F
dsViewer.IfFitWindow = False
dsViewer.Zoom = zoom
'checkZoom()
End Sub
Private Sub picboxZoomOut_Click(sender As Object, e As EventArgs) Handles Button6.Click
Dim zoom As Single = dsViewer.Zoom - 0.1F
dsViewer.IfFitWindow = False
dsViewer.Zoom = zoom
' checkZoom()
End Sub
Private Sub picboxPrevious_Click(sender As Object, e As EventArgs) Handles Button1.Click
If m_ImageCore.ImageBuffer.HowManyImagesInBuffer > 0 AndAlso m_ImageCore.ImageBuffer.CurrentImageIndexInBuffer > 0 Then
m_ImageCore.ImageBuffer.CurrentImageIndexInBuffer -= 1
End If
checkImageCount()
End Sub
Private Sub picboxNext_Click(sender As Object, e As EventArgs) Handles Button4.Click
If m_ImageCore.ImageBuffer.HowManyImagesInBuffer > 0 AndAlso m_ImageCore.ImageBuffer.CurrentImageIndexInBuffer < m_ImageCore.ImageBuffer.HowManyImagesInBuffer - 1 Then
m_ImageCore.ImageBuffer.CurrentImageIndexInBuffer += 1
End If
checkImageCount()
End Sub
Private Sub checkImageCount()
Dim currentImageIndex = m_ImageCore.ImageBuffer.CurrentImageIndexInBuffer
Dim currentIndex As Integer = currentImageIndex + 1
Dim imageCount As Integer = m_ImageCore.ImageBuffer.HowManyImagesInBuffer
If imageCount = 0 Then
currentIndex = 0
End If
tbxCurrentImageIndex.Text = currentIndex.ToString()
tbxTotalImageNum.Text = imageCount.ToString()
If imageCount > 0 Then
Button1.Enabled = True
Button4.Enabled = True
Else
Button1.Enabled = False
Button4.Enabled = False
End If
' ShowSelectedImageArea()
End Sub
Private Sub frmScan_Shown(sender As Object, e As EventArgs) Handles Me.Shown
If cboSource.Items.Count > 0 Then
btnScan.Enabled = True
cboSource.SelectedIndex = 0
End If
End Sub
End Class
Public Class SourceListWrapper
Private m_listSourceNames As List(Of String) = Nothing
Public Sub New(listSourceNames As List(Of String))
m_listSourceNames = listSourceNames
End Sub
Private m_SelectedIndex As Integer = 0
Public Function SelectSource() As Integer
Dim temp As New frmSourceList(m_listSourceNames)
temp.ShowDialog()
m_SelectedIndex = temp.GetSelectedIndex()
Return m_SelectedIndex
End Function
End Class