📄 frmmain.frm
字号:
TwainCap.CapInfo.Capability = L_CAP_FEEDERENABLED
TwainCap.CapInfo.ConType = L_TWON_ONEVALUE
blnFeederEnabled = chkFeederEnabled.Value
RasVar.Type = VALUE_BOOLEAN
RasVar.BooleanValue = blnFeederEnabled
TwainCap.CapOneValue.OneValItemType = L_TWTY_BOOL
TwainCap.CapOneValue.OneValCapValue = RasVar
nRet = RasterTwain.SetCapability2(TwainCap, L_LTWAIN_CAPABILITY_SET)
If nRet = 0 Then
'''Debug.Print "CAP_FEEDERENABLED capability is enabled"
Else
'''Msgbox "An error has occurred setting the feeder."
End If
'Set X/Y Image Resolution
RasterTwain.XResolution = CLng(Combo3.Text) 'm_lngResolution
RasterTwain.YResolution = CLng(Combo3.Text) 'm_lngResolution
'Set Brightness and Contrast
RasterTwain.ImageBrightness = (HScroll1.Value * 10)
RasterTwain.ImageContrast = (HScroll2.Value * 10)
'NOTE: setProperties takes 6+ seconds to set.
'If these properties haven't changed since last scan, don't apply "set"
Dim blnMarginsChanged As Boolean
blnMarginsChanged = False
''' If RasterTwain.ImageFrame.LeftMargin <> txtImageLeft.Text Then blnMarginsChanged = True
''' If RasterTwain.ImageFrame.TopMargin <> txtImageTop.Text Then blnMarginsChanged = True
''' If RasterTwain.ImageFrame.RightMargin <> txtImageRight.Text Then blnMarginsChanged = True
''' If RasterTwain.ImageFrame.BottomMargin <> txtImageBottom.Text Then blnMarginsChanged = True
If RasterTwain.LeftMargin <> txtSelLeft.Text Then blnMarginsChanged = True
If RasterTwain.TopMargin <> txtSelTop.Text Then blnMarginsChanged = True
If RasterTwain.RightMargin <> txtSelRight.Text Then blnMarginsChanged = True
If RasterTwain.BottomMargin <> txtSelBottom.Text Then blnMarginsChanged = True
If blnMarginsChanged = True Then
RasterTwain.GetProperties
'set the Flatbed Frame specs, and also the selection specs
'NOTE: IMAGEFRAME is basically the entire flatbed area
''' RasterTwain.ImageFrame.LeftMargin = txtImageLeft.Text
''' RasterTwain.ImageFrame.TopMargin = txtImageTop.Text
''' RasterTwain.ImageFrame.RightMargin = txtImageRight.Text
''' RasterTwain.ImageFrame.BottomMargin = txtImageBottom.Text
'NOTE: These represent a specific 'selection' area to grab from flatbed
RasterTwain.LeftMargin = txtSelLeft.Text
RasterTwain.TopMargin = txtSelTop.Text
RasterTwain.RightMargin = txtSelRight.Text
RasterTwain.BottomMargin = txtSelBottom.Text
RasterTwain.SetProperties
End If
RasterTwain.Acquire chkShowTwainUI.Value '(L_LTWAIN_SHOW_USER_INTERFACE)
''''Set properties to scale scanned image to the box.
LEADRasterView1.AutoRepaint = True
LEADRasterView1.AutoSetRects = False
' Set the image display size to match the LEAD control.
LEADRasterView1.SetDstRect 0, 0, _
LEADRasterView1.ScaleWidth, _
LEADRasterView1.ScaleHeight
LEADRasterView1.SetDstClipRect 0, 0, _
LEADRasterView1.ScaleWidth, _
LEADRasterView1.ScaleHeight
RasterTwain.EndSession
cmdAcquire.Enabled = False
End Sub
Private Sub Command1_Click()
Unload frmMain
Load frmMain
frmMain.Show
End Sub
Private Sub HScroll1_Change()
Label3.Caption = HScroll1.Value
End Sub
Private Sub HScroll2_Change()
Label4.Caption = HScroll2.Value
End Sub
Private Sub RasterTwain_AcquireMultiEvent(ByVal nPage As Integer, ByVal bstrFileName As String, ByVal bFinishScan As Boolean)
Dim strMsg As String
If bFinishScan Then
strMsg = "The page # " + CStr(nPage) + " is scanned and saved to file name " + bstrFileName
MsgBox strMsg
End If
End Sub
Private Sub RasterTwain_AcquirePageEvent(ByVal pBitmap As Long)
LEADRasterView1.Raster.InsertBitmapListItem -1, pBitmap
'for twain duplex cap
LEADRasterView2.Raster.Bitmap = pBitmap
End Sub
'Private Sub cmdSetCapability_Click()
' Dim iRet As Integer
' Dim CapVal As New LEADRasterVariant
' Set TwainCap = New LEADTwainCapability
'
' TwainCap.CapInfo.ConType = L_TWON_ONEVALUE
' TwainCap.CapInfo.Capability = L_ICAP_UNITS
' TwainCap.EnableMethodErrors = False
'
' CapVal.Type = VALUE_USHORT
' CapVal.LongValue = L_TWUN_INCHES
'
' TwainCap.CapOneValue.OneValItemType = L_TWTY_UINT16
' TwainCap.CapOneValue.OneValCapValue = CapVal
'
' iRet = RasterTwain.SetCapability2(TwainCap, L_LTWAIN_CAPABILITY_SET)
' If (iRet <> 0) Then
' MsgBox "Error Setting Capability"
' End If
'
' Set TwainCap = Nothing
'End Sub
Private Sub LoadLead_Click()
Dim RasterIO As New LEADRasterIO
CommonDialog1.Filter = "Image Files (*.bmp, *.gif, *.jpg, *.tif)|*.bmp; *.gif; *.jpg; *.tif"
CommonDialog1.ShowOpen
RasterIO.Load LEADRasterView1.Raster, CommonDialog1.FileName, 0, 0, 1
End Sub
Private Sub Form_Load()
Dim i As Integer
Set RasterTwain = New LEADRasterTwain
RasterTwain.InitSession hWnd
RasterTwain.EnableMethodErrors = False
Screen.MousePointer = 11 'hourglass
chkShowTwainUI.Value = vbChecked
cmdAcquire.Enabled = True
Combo2.AddItem "1", 0
Combo2.AddItem "8", 1
Combo2.AddItem "24", 2
Combo2.ListIndex = 0
Combo3.AddItem "75", 0
Combo3.AddItem "100", 1
Combo3.AddItem "150", 2
Combo3.AddItem "200", 3
Combo3.AddItem "300", 4
Combo3.ListIndex = 0
Combo4.AddItem "Feeder", 0
Combo4.AddItem "Feed 1 Pg", 1
Select Case RasterTwain.MaxXferCount
Case -1
Combo4.ListIndex = 0
Case 1
Combo4.ListIndex = 1
End Select
'turn off page2 button unless duplex is checked
cmdDuplexPage2.Enabled = False
Label21.Caption = RasterTwain.PaperSize
'Lead COnstants Paper Sizes for Twain
'Twain Supported Sizes
Combo5.AddItem "L_TWSS_NONE", 0
Combo5.AddItem "L_TWSS_A4LETTER", 1
Combo5.AddItem "L_TWSS_B5LETTER", 2
Combo5.AddItem "L_TWSS_USLETTER", 3
Combo5.AddItem "L_TWSS_USLEGAL", 4
Combo5.AddItem "L_TWSS_A5", 5
Combo5.AddItem "L_TWSS_B4", 6
Combo5.AddItem "L_TWSS_B6", 7
Combo5.AddItem "L_TWSS_USLEDGER", 8
Combo5.AddItem "L_TWSS_USEXECUTIVE", 9
Combo5.AddItem "L_TWSS_A3", 10
Combo5.AddItem "L_TWSS_B3", 11
Combo5.AddItem "L_TWSS_A6", 12
Combo5.AddItem "L_TWSS_C4", 13
Combo5.AddItem "L_TWSS_C5", 14
Combo5.AddItem "L_TWSS_C6", 15
Combo5.AddItem "L_TWSS_4A0", 16
Combo5.AddItem "L_TWSS_2A0", 17
Combo5.AddItem "L_TWSS_A0", 18
Combo5.AddItem "L_TWSS_A1", 19
Combo5.AddItem "L_TWSS_A2", 20
Combo5.AddItem "L_TWSS_A4", 21
Combo5.AddItem "L_TWSS_A7", 22
Combo5.AddItem "L_TWSS_A8", 23
Combo5.AddItem "L_TWSS_A9", 24
Combo5.AddItem "L_TWSS_A10", 25
Combo5.AddItem "L_TWSS_ISOB0", 26
Combo5.AddItem "L_TWSS_ISOB1", 27
Combo5.AddItem "L_TWSS_ISOB2", 28
Combo5.AddItem "L_TWSS_ISOB3", 29
Combo5.AddItem "L_TWSS_ISOB4", 30
Combo5.AddItem "L_TWSS_ISOB5", 31
Combo5.AddItem "L_TWSS_ISOB6", 32
Combo5.AddItem "L_TWSS_ISOB7", 33
Combo5.AddItem "L_TWSS_ISOB8", 34
Combo5.AddItem "L_TWSS_ISOB9", 35
Combo5.AddItem "L_TWSS_ISOB10", 36
Combo5.AddItem "L_TWSS_JISB0", 37
Combo5.AddItem "L_TWSS_JISB1", 38
Combo5.AddItem "L_TWSS_JISB2", 39
Combo5.AddItem "L_TWSS_JISB3", 40
Combo5.AddItem "L_TWSS_JISB4", 41
Combo5.AddItem "L_TWSS_JISB5", 42
Combo5.AddItem "L_TWSS_JISB6", 43
Combo5.AddItem "L_TWSS_JISB7", 44
Combo5.AddItem "L_TWSS_JISB8", 45
Combo5.AddItem "L_TWSS_JISB9", 46
Combo5.AddItem "L_TWSS_JISB10", 47
Combo5.AddItem "L_TWSS_C0", 48
Combo5.AddItem "L_TWSS_C1", 49
Combo5.AddItem "L_TWSS_C2", 50
Combo5.AddItem "L_TWSS_C3", 51
Combo5.AddItem "L_TWSS_C7", 52
Combo5.AddItem "L_TWSS_C8", 53
Combo5.AddItem "L_TWSS_C9", 54
Combo5.AddItem "L_TWSS_C10", 55
Combo5.AddItem "L_TWSS_USSTATEMENT", 56
Combo5.AddItem "L_TWSS_BUSINESSCARD", 57
Combo5.ListIndex = 0
Combo6.AddItem "BMP", 0
Combo6.AddItem "JPG", 1
Combo6.AddItem "GIF", 2
Combo6.AddItem "TIF", 3
Combo6.ListIndex = 0
'Set defaults for displaying the image.
'These are all persistent properties that can be set in the properties box.
LEADRasterView1.Appearance = RASTERVIEW_APPEARANCE_FLAT
LEADRasterView1.BorderStyle = 1
LEADRasterView1.BackColor = RGB(255, 255, 125)
LEADRasterView1.PaintDither = PAINTDITHER_DIFFUSION
LEADRasterView1.PaintPalette = PAINTPALETTE_AUTO
LEADRasterView1.AutoRepaint = True
LEADRasterView1.AutoSize = False
LEADRasterView1.AutoSetRects = True
LEADRasterView1.PaintSizeMode = PAINTSIZEMODE_FIT
' Unlock Document support.
' Note that this is a sample key, which will not work in your toolkit.
RasterTwain.UnlockSupport L_SUPPORT_DOCUMENT, "TestKey"
' populare the scanner name dropdown
' Load the installed Twain Sources
m_lngScannerCount = RasterTwain.SourceCount
'load the scanner dropdown box with all available scanners
For i = 0 To m_lngScannerCount - 1 Step 1
Combo1.AddItem RasterTwain.SourceName(i)
Combo1.ListIndex = 0
Next i
'FILL THE REFERENCE GUI WITH CURRENT SCANNERS SETTINGS
RasterTwain.GetProperties
'Debug.Print RasterTwain.ImageResolution.Unit
Select Case RasterTwain.ImageResolution.BitsPerPixel
Case 1
Combo2.ListIndex = 0
Case 8
Combo2.ListIndex = 1
Case 24
Combo2.ListIndex = 2
End Select
Select Case RasterTwain.XResolution
Case 75
RasterTwain.XResolution = 75
RasterTwain.YResolution = 75
Case 100
RasterTwain.XResolution = 100
RasterTwain.YResolution = 100
Case 150
RasterTwain.XResolution = 150
RasterTwain.YResolution = 150
Case 200
RasterTwain.XResolution = 200
RasterTwain.YResolution = 200
Case 300
RasterTwain.XResolution = 300
RasterTwain.YResolution = 300
End Select
txtTwainMaxPages.Text = RasterTwain.MaxPagesNumber
txtXferPages.Text = RasterTwain.MaxXferCount
txtTwainRotation.Text = RasterTwain.ImageResolution.RotationAngle
'let's avoid divide by zero errors
If RasterTwain.ImageBrightness = 0 Then RasterTwain.ImageBrightness = 1
If RasterTwain.ImageContrast = 0 Then RasterTwain.ImageContrast = 1
'get the settings
HScroll1.Value = (RasterTwain.ImageBrightness / 10)
Label3.Caption = (RasterTwain.ImageBrightness / 10)
HScroll2.Value = (RasterTwain.ImageContrast / 10)
Label4.Caption = (RasterTwain.ImageContrast / 10)
'NOTE!!! The IMAGEFRAME is the glass of the scanner, the ENTIRE AVAILABLE AREA
'so top would be 0, left would be 0, right might be 8.5 and bottom might be 11.5
'the RasterTwain.LeftMargin (etc.) represents the SELECTION box
txtImageLeft.Text = RasterTwain.ImageFrame.LeftMargin
txtImageTop.Text = RasterTwain.ImageFrame.TopMargin
txtImageRight.Text = RasterTwain.ImageFrame.RightMargin
txtImageBottom.Text = RasterTwain.ImageFrame.BottomMargin
txtSelLeft.Text = RasterTwain.LeftMargin
txtSelTop.Text = RasterTwain.TopMargin
txtSelRight.Text = RasterTwain.RightMargin
txtSelBottom.Text = RasterTwain.BottomMargin
'interpreted now
txtWidth.Text = RasterTwain.ImageFrame.RightMargin - RasterTwain.ImageFrame.LeftMargin
txtHeight.Text = RasterTwain.ImageFrame.BottomMargin - RasterTwain.ImageFrame.TopMargin
'FEEDER CAPABILITY
Dim bEnable As Boolean
'Dim nRet As Integer
'RasterTwain.SelectSource
TwainCap.CapInfo.Capability = L_CAP_AUTOFEED
TwainCap.CapInfo.ConType = L_TWON_ONEVALUE
bEnable = True
Dim RasVar As New LEADRasterVariant
RasVar.Type = VALUE_BOOLEAN
RasVar.BooleanValue = bEnable
TwainCap.CapOneValue.OneValItemType = L_TWTY_BOOL
TwainCap.CapOneValue.OneValCapValue = RasVar
nRet = RasterTwain.SetCapability2(TwainCap, L_LTWAIN_CAPABILITY_SET)
chkFeederEnabled.Enabled = True
If nRet = 0 Then
chkFeederEnabled = vbChecked
'MsgBox "AutoFeed capability is enabled"
Else
chkFeederEnabled = vbUnchecked
'MsgBox "Can't enable AutoFeed capability"
End If
' try to acquire pages using AutoFeed capability
'RasterTwain.Acquire L_LTWAIN_SHOW_USER_INTERFACE Or L_LTWAIN_MODAL_USER_INTERFACE
'DUPLEX SUPPORT
Dim bEnableDuplex As Boolean
Dim nDuplexMode As Integer
' Dim nMaxXfer As Integer
chkDuplexEnabled.Value = RasterTwain.EnableDuplex
nDuplexMode = RasterTwain.DuplexMode
If chkDuplexEnabled.Value = vbUnchecked Then
RasterTwain.EnableDuplex = True
End If
LEADRasterView2.Height = LEADRasterView1.Height
LEADRasterView2.Left = LEADRasterView1.Left
LEADRasterView2.Top = LEADRasterView1.Top
LEADRasterView2.Width = LEADRasterView1.Width
LEADRasterView2.Visible = False
Screen.MousePointer = 0 'default
End Sub
Private Sub Form_Unload(Cancel As Integer)
RasterTwain.EndSession
Set RasterTwain = Nothing
Set TwainCap = Nothing
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -