Reputation: 1321
In my XAML, I have:
<Image Height="150" HorizontalAlignment="Left" Margin="0,4,0,0" Name="imgLogo" Stretch="Fill" VerticalAlignment="Top" Width="417" />
<Image Height="343" HorizontalAlignment="Left" Margin="0,155,0,0" Name="imgPhoto" Stretch="Fill" VerticalAlignment="Top" Width="417" />
In the C# code behind, I have:
WebClient wcForLogo = new WebClient();
wcForLogo.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wcForLogo_DownloadStringCompleted);
wcForLogo.DownloadStringAsync(new Uri("http://mySite/logo.gif"));
WebClient wcForPhoto = new WebClient();
wcForPhoto.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wcForPhoto_DownloadStringCompleted);
wcForPhoto.DownloadStringAsync(new Uri("http://mySite/photo.jpg"));
But now I don't know how to catch the image and post it in the XAML controls I built.
2 questions:
Upvotes: 0
Views: 7561
Reputation: 39007
If you just want to display the picture, you don't have to use a WebClient. You can set the Uri directly in the image source, and the control will take care of the downloading:
imgLogo.Source = new BitmapImage(new Uri("images/yourPicture.png", UriKind.Relative));
Note that GIF aren't supported by the Image control. You can still display them by using the converter from the ImageTools library: Display GIF in a WP7 application with Silverlight
Upvotes: 2
Reputation: 7233
Let's say your image control is called MyImage
, you can just do this to load an image from an URL:
MyImage.Source = new System.Windows.Media.Imaging.BitmapImage(new Uri("http://mySite/photo.jpg"));
No need to do all the plumbing just to download the image, the framework already does that for you!
Upvotes: 0
Reputation: 98
using System.Net;
using System.IO;
private void Form1_Load(object sender, EventArgs e)
{
WebClient webclient = new WebClient();
webclient.DownloadDataAsync(new Uri("http://mySite/logo.gif"));
webclient.DownloadDataCompleted += callback;
}
void callback(object sender,DownloadDataCompletedEventArgs e)
{
var ms = new MemoryStream(e.Result);
pictureBox1.Image = Image.FromStream(ms);
}
Upvotes: 1
Reputation: 647
If you want to save in isolated storage use like this
WebClient m_webClient = new WebClient();
Uri m_uri = new Uri("http://URL");
m_webClient.OpenReadCompleted += new OpenReadCompletedEventHandler(webClient_OpenReadCompleted);
m_webClient.OpenReadAsync(m_uri);
}
void webClient_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
int count;
Stream stream = e.Result;
byte[] buffer = new byte[1024];
using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication())
{
using (System.IO.IsolatedStorage.IsolatedStorageFileStream isfs = new IsolatedStorageFileStream("IMAGES.jpg", FileMode.Create, isf))
{
count = 0;
while (0 < (count = stream.Read(buffer, 0, buffer.Length)))
{
isfs.Write(buffer, 0, count);
}
stream.Close();
isfs.Close();
}
}
To get image form isostore:
byte[] data;
using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication())
{
using (IsolatedStorageFileStream isfs = isf.OpenFile(uri, FileMode.Open, FileAccess.Read))
{
data = new byte[isfs.Length];
isfs.Read(data, 0, data.Length);
isfs.Close();
}
}
MemoryStream ms = new MemoryStream(data);
BitmapImage bi = new BitmapImage();
bi.SetSource(ms);
If you give the image name as image then set the source as bi:
image.source = bi;
If you want to add directly
WebClient client = new WebClient();
Stream stream = client.OpenRead(imageUrl);
Bitmap bitmap = new Bitmap(stream);
image.source = bitmap;
Upvotes: 0