منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
شرح - سحب الصور بأستخدام الماسح الضوئي (السكانر ) image scan - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : الأقسام التعليمية - المنتدى القديم (http://vb4arb.com/vb/forumdisplay.php?fid=90)
+--- قسم : مكتبة أكواد المنتدى (http://vb4arb.com/vb/forumdisplay.php?fid=111)
+---- قسم : مكتبة أكواد .net (http://vb4arb.com/vb/forumdisplay.php?fid=117)
+---- الموضوع : شرح - سحب الصور بأستخدام الماسح الضوئي (السكانر ) image scan (/showthread.php?tid=6344)



شرح - سحب الصور بأستخدام الماسح الضوئي (السكانر ) image scan - RaggiTech - 17-10-12

كاتب الموضوع : SUB NEW

السلام عليكم
التعامل مع جهاز المسح الضوئي (السكانر ) image scan أو مع الكاميرات



أولاً وقبل كل شيء يجب إضافة المرجعية Interop.WIALib.dll
وقمت بوضعها في المرفقات

لأستيراد المرجعية نقوم بذلك من قائمة Project ثم Add Reference ونضغط على تبويب Browse ونقوم بالبحث عن الملف الذي ذكر سابقاً Interop.WIALib.dll (الملف موجود في المجلد المضغوط في المرفقات )


بعدها نقوم بأستيراد مجالات الأسماء التالية



كود :
Imports WIALib
Imports System
Imports System.Drawing
Imports System.Collections
Imports System.ComponentModel
Imports System.Windows.Forms
Imports System.Data
Imports System.IO
Imports System.Runtime.InteropServices
نضع في التصميم
أداة PictureBox1 و زر Button1 (وهو زر أمر السحب )

نتابع بالأكواد ونضيف في التصريحات العامة



كود :
Private imageFileName As String
ثم وفي حدث الكليك على الزر Button1 نضع كود الماسح الضوئي


كود :
Dim wiaManager As WiaClass = Nothing
Dim wiaDevs As CollectionClass = Nothing
Dim wiaRoot As ItemClass = Nothing
Dim wiaPics As CollectionClass = Nothing
Dim wiaItem As ItemClass = Nothing
Try
wiaManager = New WiaClass()
wiaDevs = TryCast(wiaManager.Devices, CollectionClass)
If (wiaDevs Is Nothing) OrElse (wiaDevs.Count = 0) Then
MessageBox.Show(Me, "No WIA devices found!", "WIA", MessageBoxButtons.OK, MessageBoxIcon.[Stop])
Application.[Exit]()
Exit Sub
End If
Dim selectUsingUI As Object = System.Reflection.Missing.Value
wiaRoot = DirectCast(wiaManager.Create(selectUsingUI), ItemClass)
If wiaRoot Is Nothing Then
Exit Sub
End If

wiaPics = TryCast(wiaRoot.GetItemsFromUI(WiaFlag.SingleImage, WiaIntent.ImageTypeColor), CollectionClass)
If wiaPics Is Nothing Then
Exit Sub
End If
Dim takeFirst As Boolean = True
For Each wiaObj As Object In wiaPics
If takeFirst Then

wiaItem = DirectCast(Marshal.CreateWrapperOfType(wiaObj, GetType(ItemClass)), ItemClass)
imageFileName = Path.GetTempFileName()
Cursor.Current = Cursors.WaitCursor
Me.Refresh()
wiaItem.Transfer(imageFileName, False)
PictureBox1.Image = Image.FromFile(imageFileName)


takeFirst = False
End If
Marshal.ReleaseComObject(wiaObj)
Next
Catch ee As Exception
MessageBox.Show(Me, "Acquire from WIA Imaging failed" & vbCr & vbLf & ee.Message, "WIA", MessageBoxButtons.OK, MessageBoxIcon.[Stop])
Application.[Exit]()
Finally
If wiaItem IsNot Nothing Then
Marshal.ReleaseComObject(wiaItem)
End If
If wiaPics IsNot Nothing Then
Marshal.ReleaseComObject(wiaPics)
End If
If wiaRoot IsNot Nothing Then
Marshal.ReleaseComObject(wiaRoot)
End If
If wiaDevs IsNot Nothing Then
Marshal.ReleaseComObject(wiaDevs)
End If
If wiaManager IsNot Nothing Then
Marshal.ReleaseComObject(wiaManager)
End If
Cursor.Current = Cursors.[Default]
End Try
End Sub
المكتبة كما ذكرت سابقاً موجودة في المرفقات
تمت تجربتها على vb.net2008 لا أستطيع الجزم بعملها على vs2003 or vs2005

تحياتى واحترامى للجميع وبالتوفيق