1

WebClientを特定の方法で使用できるようにする必要があります。画像をバイトストリームとしてダウンロードし、これを画像に割り当てる必要があります。割り当てられる画像とアイテムが複数あり、これらがリストに表示されます。このアプリケーションはSilverlight3アプリケーションであり、ソリューションはSilverlightで機能するものでなければなりません。

使用したいダウンロード方法があります:

    Public Sub Download(ByRef Source As Uri, ByRef Target As BitmapImage)
        Dim _Client As New WebClient
        _Client.OpenReadAsync(Source, Target)
        AddHandler _Client.OpenReadCompleted, AddressOf Downloaded
    End Sub

これがダウンロードされたイベントハンドラー(部分的な実装)です。これは、ToByteArrayメソッドを使用して、ダウンロードされた画像データをバイトの配列に変換します。

    Private Sub Downloaded(ByVal sender As Object, _
                           ByVal e As OpenReadCompletedEventArgs)
        If Not e.Cancelled Then
            Dim Bytes As Byte() = ToByteArray(e.Result)
            Dim Bitmap As New BitmapImage
            Bitmap.SetSource(e.Result)
            ' Set Target Bitmap Here
        End If
    End Sub

ダウンロードされた画像(ターゲット)に設定されるターゲット画像は、ユーザートークンとしてOpenReadAsyncメソッドに渡され、OpenReadCompletedEventArgs UserStateプロパティを使用して読み取ることができますが、これはReadOnlyです-ターゲットをダウンロードされた画像に設定する必要があります。ダウンロードされたメソッド内。

ダウンロードメソッドでUserTokenとして渡された画像ソース/ビットマップ画像をダウンロードメソッドで設定するにはどうすればよいですか?

4

1 に答える 1

0

このコードを次のように再配置します:-

Public Function Download(ByVal Source As Uri) As BitmapImage
    Dim client As New WebClient
    Dim target As BitMapImage
    client.OpenReadAsync(Source, target)
    AddHandler client.OpenReadCompleted, AddressOf Downloaded
    Return target
End Sub

Private Sub Downloaded(ByVal sender As Object, _
                       ByVal e As OpenReadCompletedEventArgs)
    If Not e.Cancelled Then
        DirectCast(e.UserState, BitmapImage).SetSource(e.Result)
    End If
End Sub   

これを呼び出すことに注意してください:-

myBitmap = Download(myUri)

ダウンロードが完了すると、返されるビットマップのソースが設定されます。

は何のToByteArray役にも立たないようだったので、削除しました。ByRefパスも削除しました。

于 2009-10-17T12:50:58.833 に答える