2012-10-05 24 views
1

我想要在Picturebox控件中獲得2個天氣雷達圖像疊加在彼此頂部。圖形的尺寸都是600,550。我的代碼給了我沒有錯誤,但是當我運行它時,它只是給了我一個空白的表單。我究竟做錯了什麼?試圖讓2疊加在VB 2012中顯示在一個picturebox中

這裏是我的代碼:

Dim Image1 As New Bitmap("http://radar.weather.gov/ridge/Overlays/Topo/Short/FWS_Topo_Short.jpg") 
    Dim Image2 As New Bitmap("http://radar.weather.gov/ridge/RadarImg/N0R/FWS_N0R_0.gif") 
    Dim Image3 As New Bitmap(600, 550) 
    Dim g As Graphics = Graphics.FromImage(Image3) 
    g.DrawImage(Image1, New Point(0, 0)) 
    g.DrawImage(Image2, New Point(0, 0)) 
    PictureBox1.Image = Image3 
    g.Dispose() 
    g = Nothing 

回答

1

不能使用URI的位圖,你需要指定一個本地路徑。但是,您可以在Bitmap中使用流,因此請首先打開流向網站圖像的流並通過該流加載。

例如:

 Dim Image1 As Bitmap = GetStreamBitmap("http://radar.weather.gov/ridge/Overlays/Topo/Short/FWS_Topo_Short.jpg") 
     Dim Image2 As Bitmap = GetStreamBitmap("http://radar.weather.gov/ridge/RadarImg/N0R/FWS_N0R_0.gif") 

     'TODO implement error checking, "if image1 is nothing" etc.. 

     Dim Image3 As New Bitmap(600, 550) 
     Dim g As Graphics = Graphics.FromImage(Image3) 
     g.DrawImage(Image1, New Point(0, 0)) 
     g.DrawImage(Image2, New Point(0, 0)) 

     PictureBox1.Image = Image3 

     g.Dispose() 
     g = Nothing 

     Image2.Dispose() 
     Image1.Dispose() 

'... 

    Private Function GetStreamBitmap(url As String) As Bitmap 

     Dim bmp As Bitmap = Nothing 

     Try 
      Dim request As System.Net.WebRequest = _ 
       System.Net.WebRequest.Create(url) 

      Dim response As System.Net.WebResponse = request.GetResponse() 
      Dim responseStream As System.IO.Stream = response.GetResponseStream() 
      bmp = New Bitmap(responseStream) 

     Catch ex As System.Net.WebException 
      ' handle error here 
     End Try 

     Return bmp 

    End Function 
+0

沒有直接關係,或必需的,但對於改進的兩個圖像的混合,創造了圖形後直接添加該目的:g.CompositingMode = Drawing2D.CompositingMode.SourceOver 克。 CompositingQuality = Drawing2D.CompositingQuality.HighQuality – K3N

+0

非常感謝您的回覆!這正是我需要的:) –

相關問題