Mehrseitige Bilder wie TIFF und GIF

Irgendwo hab ich gelesen das System.Drawing obsolet sei. Jedenfalls gabs dort eine SelectActiveFrame Methode mit der man ganz einfach ein mehrseitiges Bild in einem Image Control anzeigen kann.

Was unter .NET 4 ein Einzeiler ist, braucht in Windows 8 und WinRt ein wenig mehr VB.NET Code

 Dim pageCount As Integer = 0
    Dim f As StorageFile
    Private Async Function Button_Click_1(sender As Object, e As RoutedEventArgs) As Task
        If f Is Nothing Then
            Dim fo As New FileOpenPicker() 'Manifest fileopnepicker 
            fo.SuggestedStartLocation = PickerLocationId.PicturesLibrary
            fo.ViewMode = PickerViewMode.Thumbnail
            fo.FileTypeFilter.Clear()
            fo.FileTypeFilter.Add(".tif")
            f = Await fo.PickSingleFileAsync()
        End If
        Dim fileStream As IRandomAccessStream = Await f.OpenAsync(Windows.Storage.FileAccessMode.Read)
        Dim imgDecode = Await BitmapDecoder.CreateAsync(BitmapDecoder.TiffDecoderId, fileStream)
        Dim b1 As BitmapFrame = Await imgDecode.GetFrameAsync(pageCount)
        Dim pData = Await b1.GetPixelDataAsync
        Dim ims = New InMemoryRandomAccessStream()
        Dim imgEncode = Await BitmapEncoder.CreateAsync(BitmapEncoder.TiffEncoderId, ims)
        imgEncode.SetPixelData(
        imgDecode.BitmapPixelFormat,
        imgDecode.BitmapAlphaMode,
        imgDecode.PixelWidth,
        imgDecode.PixelHeight,
         imgDecode.DpiX,
        imgDecode.DpiY,
        pData.DetachPixelData()
                )
        Await imgEncode.FlushAsync
        ims.Seek(0)
        Dim bi As New BitmapImage()
        bi.SetSource(ims)
        bild1.Source = bi
        pageCount += 1
    End Function
End Class
Kommentare sind geschlossen