C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: ImageListにWEB上の画像をセット


(過去ログ 122 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■73198 / inTopicNo.1)  ImageListにWEB上の画像をセット
  
□投稿者/ こういち (3回)-(2014/08/28(Thu) 00:48:22)

分類:[VB.NET/VB2005 以降] 

タイトルのとおりですが、imageListにWEB上の画像を追加することはできますでしょうか?

直接できないようなら、PictureBox.LocationでWEB上の画像を取得して、ImageListに追加する、、
とか考えたのですが、いまいちよくわかりませんでした。。
引用返信 編集キー/
■73199 / inTopicNo.2)  Re[1]: ImageListにWEB上の画像をセット
□投稿者/ Hongliang (227回)-(2014/08/28(Thu) 08:46:39)
2014/08/28(Thu) 10:43:31 編集(投稿者)

WebClient.DownloadDataメソッドでByte()配列としてダウンロードし、それを使ってNew Bitmapすればいいんでは。

追記:直接Byte()を受け取れるNew Bitmapは無かったですね。New MemoryStream(Byte())を使えば良いでしょう。
引用返信 編集キー/
■73201 / inTopicNo.3)  Re[1]: ImageListにWEB上の画像をセット
□投稿者/ 魔界の仮面弁士 (105回)-(2014/08/28(Thu) 10:54:43)
No73198 (こういち さん) に返信
> 直接できないようなら、PictureBox.LocationでWEB上の画像を取得して、ImageListに追加する、、

Loacation ではなく、ImageLocation ですよね。
Loacation は、PictureBox の座標を示すプロパティです。


ImageLocation プロパティだと、ロードが完了するまでの待ち合わせが行えないため、
PictureBox を使うのであれば、Load メソッドか LoadAsync メソッドの方が良いでしょう。


また、Web サーバーに接続できなった場合や、サーバーには繋がったが
画像形式が不正だった場合のエラーチェックも必要ですね。


Public Class Form1
    Private URL1 As String = "http://www.bing.com/favicon.ico"
    Private URL2 As String = "http://www.google.com/favicon.ico"
    Private URL3 As String = "http://www.yahoo.co.jp/favicon.ico"

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        PictureBox1.Hide()
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        '案1
        Try
            PictureBox1.Load(URL1)
            ImageList1.Images.Add("案1", PictureBox1.Image)

            Button1.ImageAlign = ContentAlignment.MiddleLeft
            Button1.ImageList = ImageList1
            Button1.ImageKey = "案1"
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical)
        End Try
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        '案2
        AddHandler PictureBox1.LoadCompleted, AddressOf Me.LoadCompleted
        PictureBox1.LoadAsync(URL2)
    End Sub
    Private Sub LoadCompleted(sender As Object, e As System.ComponentModel.AsyncCompletedEventArgs)
        RemoveHandler PictureBox1.LoadCompleted, AddressOf Me.LoadCompleted

        If e.Error IsNot Nothing Then
            MsgBox(e.Error.Message, MsgBoxStyle.Critical)
            'Return
        End If

        ImageList1.Images.Add("案2", PictureBox1.Image)

        Button2.ImageAlign = ContentAlignment.MiddleLeft
        Button2.ImageList = ImageList1
        Button2.ImageKey = "案2"
    End Sub

    Private Sub Button3_Click(sender As System.Object, e As EventArgs) Handles Button3.Click
        '案3
        Dim wr As System.Net.HttpWebRequest = System.Net.WebRequest.Create(URL3)
        Dim res As System.Net.HttpWebResponse = Nothing
        Try
            res = wr.GetResponse()
            Dim img As Image
            Using stm As System.IO.Stream = res.GetResponseStream()
                img = Image.FromStream(stm)
            End Using
            ImageList1.Images.Add("案3", img)

            Button3.ImageAlign = ContentAlignment.MiddleLeft
            Button3.ImageList = ImageList1
            Button3.ImageKey = "案3"
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical)
            Return
        Finally
            If res IsNot Nothing Then res.Close()
        End Try
    End Sub

End Class

引用返信 編集キー/
■73214 / inTopicNo.4)  Re[2]: ImageListにWEB上の画像をセット
□投稿者/ こういち (4回)-(2014/08/28(Thu) 21:48:11)
No73201 (魔界の仮面弁士 さん) に返信

ものすごく丁寧にありがとうございます!!
やはりPictureBoxを使わない方がシンプルでよいですね。

案3で実装したいと思います。
ありがとうございました!


> ■No73198 (こういち さん) に返信
>>直接できないようなら、PictureBox.LocationでWEB上の画像を取得して、ImageListに追加する、、
>
> Loacation ではなく、ImageLocation ですよね。
> Loacation は、PictureBox の座標を示すプロパティです。
>
>
> ImageLocation プロパティだと、ロードが完了するまでの待ち合わせが行えないため、
> PictureBox を使うのであれば、Load メソッドか LoadAsync メソッドの方が良いでしょう。
>
>
> また、Web サーバーに接続できなった場合や、サーバーには繋がったが
> 画像形式が不正だった場合のエラーチェックも必要ですね。
>
>
> Public Class Form1
> Private URL1 As String = "http://www.bing.com/favicon.ico"
> Private URL2 As String = "http://www.google.com/favicon.ico"
> Private URL3 As String = "http://www.yahoo.co.jp/favicon.ico"
>
> Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
> PictureBox1.Hide()
> End Sub
>
> Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
> '案1
> Try
> PictureBox1.Load(URL1)
> ImageList1.Images.Add("案1", PictureBox1.Image)
>
> Button1.ImageAlign = ContentAlignment.MiddleLeft
> Button1.ImageList = ImageList1
> Button1.ImageKey = "案1"
> Catch ex As Exception
> MsgBox(ex.Message, MsgBoxStyle.Critical)
> End Try
> End Sub
>
> Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
> '案2
> AddHandler PictureBox1.LoadCompleted, AddressOf Me.LoadCompleted
> PictureBox1.LoadAsync(URL2)
> End Sub
> Private Sub LoadCompleted(sender As Object, e As System.ComponentModel.AsyncCompletedEventArgs)
> RemoveHandler PictureBox1.LoadCompleted, AddressOf Me.LoadCompleted
>
> If e.Error IsNot Nothing Then
> MsgBox(e.Error.Message, MsgBoxStyle.Critical)
> 'Return
> End If
>
> ImageList1.Images.Add("案2", PictureBox1.Image)
>
> Button2.ImageAlign = ContentAlignment.MiddleLeft
> Button2.ImageList = ImageList1
> Button2.ImageKey = "案2"
> End Sub
>
> Private Sub Button3_Click(sender As System.Object, e As EventArgs) Handles Button3.Click
> '案3
> Dim wr As System.Net.HttpWebRequest = System.Net.WebRequest.Create(URL3)
> Dim res As System.Net.HttpWebResponse = Nothing
> Try
> res = wr.GetResponse()
> Dim img As Image
> Using stm As System.IO.Stream = res.GetResponseStream()
> img = Image.FromStream(stm)
> End Using
> ImageList1.Images.Add("案3", img)
>
> Button3.ImageAlign = ContentAlignment.MiddleLeft
> Button3.ImageList = ImageList1
> Button3.ImageKey = "案3"
> Catch ex As Exception
> MsgBox(ex.Message, MsgBoxStyle.Critical)
> Return
> Finally
> If res IsNot Nothing Then res.Close()
> End Try
> End Sub
>
> End Class
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -