这是一个在windows通用应用程序中解码条形码的小示例。它在vb.net中,但您可以将其转换为c#…或在工作时问我。。。
Imports Windows.Media.Capture
Imports Windows.Storage.Streams
Imports Windows.Media.MediaProperties
Public NotInheritable Class MainPage
Inherits Page
Private capture As MediaCapture
Private Async Function TakePhoto() As Task
Try
capture = New MediaCapture
Await capture.InitializeAsync
captureElementPreview.Source = capture
Await capture.StartPreviewAsync
Dim res As VideoEncodingProperties = capture.VideoDeviceController.GetMediaStreamProperties(MediaStreamType.VideoPreview)
Dim iep As ImageEncodingProperties = ImageEncodingProperties.CreateBmp
iep.Height = res.Height
iep.Width = res.Width
Dim barcodereader As New ZXing.BarcodeReader With {.AutoRotate = True}
Dim wb As New WriteableBitmap(res.Width, res.Height)
Dim result As ZXing.Result = Nothing
While result Is Nothing
Using stream = New InMemoryRandomAccessStream()
Await capture.CapturePhotoToStreamAsync(iep, stream)
stream.Seek(0)
Await wb.SetSourceAsync(stream)
result = barcodereader.Decode(wb)
End Using
End While
Scanresult.Text = result.Text
Await capture.StopPreviewAsync
Debug.WriteLine(Scanresult.Text)
Catch ex As Exception
Debug.WriteLine("Exception when taking a photo: {0}", ex.ToString())
End Try
End Function
Private Async Sub buttonCapture_Click(sender As Object, e As RoutedEventArgs)
Await TakePhoto()
End Sub
End Class
您需要导入zxing.winrt。dll从zxing库的子文件夹\winrt中删除。我从stackoverflow的另一个帖子中获取了这个代码。很多事情都可以做得更好,但它对第一步有效。。。
问候Frank