Laden...

Problem mit Image in Windows Phone 7

Erstellt von mcpd vor 13 Jahren Letzter Beitrag vor 13 Jahren 2.382 Views
M
mcpd Themenstarter:in
174 Beiträge seit 2009
vor 13 Jahren
Problem mit Image in Windows Phone 7

Hallo Leute,

ich weiß nicht ob ich hier richtig bin. Es geht um Windows Phone 7, speziell
App-Entwicklung mit Silverlight für Windows Phone 7.

Ich habe ein Image-Control und möchte ein Bild anzeigen.
Verwende folgenden Code:


// URI-STRING
string uri = "./Content/Images/" + (string)picElement.Element("Bild1");

// BitmapImage erstellen
BitmapImage bmpImage = new BitmapImage(new Uri(uri));
                               
// ImageSource zuweisen und Pic anzeigen
imgTourPic.Source = bmpImage;

Leider wird mir kein Bild angezeigt. Woram kamm das liegen?
Danke.

mfg
mcpd

M
255 Beiträge seit 2006
vor 13 Jahren

Hallo mcpd,

nimmst du noch die Betatools oder die Final?

Ich hab leider noch nicht mit der Final gearbeitet, erinner mich aber daran,
dass in der Beta direktes (Bilder) laden von dynamisch generierten URIs nicht möglich war.
Du solltest beim Debugen sehen, dass die ImagSource leer bzw fehlerhaft ist. Daher auch das leere Bild.

Teste am Besten mal eine feste URI und schau ob das Bild dann geladen wird. Wenn dies der Fall ist liegt es an dem Problem.

Ich hatte das auch und hab das so gelöst (Workaround - WP7 BETA Code):


//Load BitmapImage
if (myFile.FileExists(filepath + ".jpg";))
{

myStream = myFile.OpenFile(filepath + ".jpg", FileMode.Open);

// Decode the JPEG stream.
WriteableBitmap myBitmap = PictureDecoder.DecodeJpeg(myStream);

myStream.Close();
myStream.Dispose();

MemoryStream ms = new MemoryStream();
BitmapImage bmp = new BitmapImage();

//Convert WriteableBitmap to BitmapImage
myBitmap.SaveJpeg(ms, myBitmap.PixelWidth, myBitmap.PixelHeight, 0, 100);
bmp.SetSource(ms);

this.addToImages(bmp));
}
else
{...}

Ich hoffe es hilft dir weiter,
Mazo

P.S. WP7 rulez 😄

M
mcpd Themenstarter:in
174 Beiträge seit 2009
vor 13 Jahren

Danke für Deinen Tipp.

Dabei hast Du mich auf eine Idee gebracht. Ich verwende jetzt folgende
Methode:


private void LoadImage(string relativeUri)
{
      // URI-Objekt erstellen
      Uri uri = new Uri(relativeUri, UriKind.Relative);

      // Ressourcenstreaminformationen über die GetResourceStream-Methode abrufen
      StreamResourceInfo resourceInfo = Application.GetResourceStream(uri);

      // BitmapImage-Objekt erstellen
      BitmapImage bmpImage = new BitmapImage();

      // Stream in Image Konvertieren
      bmpImage.SetSource(resourceInfo.Stream);

      // Picture anzeigen
      imgTourPic.Source = bmpImage;
}

Die relative URI musste ich auch ändern in:
"/Projekt;component/Content/Images/"

Jetzt funktioniert es auch mit der Anzeige dynamisch geladener Picture