usando un WebBrowser Control para mostrar contenido Local HTML con imagenes.

Para dar las gracias debes entrar o registrarte en el foro

Miembro ocasional
Miembro ocasional
Mensajes: 33 Agradecido: 0
30 Abr 2012, 15:40# 1

Hola de nuevo.

Estoy presentando contenido local html desde un control webbrowser, el contenido se muestra correctamente , lo que no muestra es la imagen que tiene esa pagina html , el codigo que uso es :

StreamReader reader = new StreamReader(TitleContainer.OpenStream("html/a106.html"));
WebBarti.NavigateToString("" + reader.ReadToEnd() + "");

la pagina html/a106.html tiene una imagen que la busca el el path html/img/106.jpg y no la muestra , supongo que no la muestra ya que no esta grabada en isolated storage.

A ver si podeis comentarme los pasos a seguir para que muestre esta imagen .jpg, en un principio supongo que seria cargarla como un recurso:
StreamResourceInfo sr = Application.GetResourceStream(new Uri("html/img/a106.jpg", UriKind.Relative));

Y posteriormente grabarla en isolagetostore.

He estado mirando ejemplos que he encontrado y no me funciona ninguno de ellos, espero vuestra ayuda si sois tan amables :-)

Un Saludo.

Gracias  
Etiquetado en:
Miembro ocasional
Miembro ocasional
Mensajes: 33 Agradecido: 0
01 May 2012, 12:02# 2

Ya lo he solucionado tambien, gracias de todos modos , si a alguien le interesa pues lo posteo :-)

Un Saludo.

Gracias  
Nuevo miembro
Nuevo miembro
Mensajes: 2 Agradecido: 0
15 May 2012, 11:10# 3

Buenos dias,

seria interesante que postearas como lo resolvistes porque tengo el mismo problema. He puesto las imagenes como "content" como "recurso" pero sigue sin mostrarlas. Es un html que se ve en cualquier navegador.

Gracias

Gracias  
Administrador
Administrador
Mensajes: 826 Agradecido: 119
15 May 2012, 22:42# 4
logik0 escribió:Buenos dias,

seria interesante que postearas como lo resolvistes porque tengo el mismo problema. He puesto las imagenes como "content" como "recurso" pero sigue sin mostrarlas. Es un html que se ve en cualquier navegador.

Gracias


Las imágenes tienen que estar en el IsolatedStorage de la aplicación, no en el proyecto. Desde HTML no se puede cargar una imagen de un assembly.
Gracias  
Miembro ocasional
Miembro ocasional
Mensajes: 33 Agradecido: 0
16 May 2012, 00:53# 5
logik0 escribió:Buenos dias,

seria interesante que postearas como lo resolvistes porque tengo el mismo problema. He puesto las imagenes como "content" como "recurso" pero sigue sin mostrarlas. Es un html que se ve en cualquier navegador.

Gracias


No te preocupes, mañana con tiempo, lo posteo ahora mismo no puedo.
Un Saludo.
Gracias  
Nuevo miembro
Nuevo miembro
Mensajes: 2 Agradecido: 0
17 May 2012, 08:26# 6

Pero eso significa que si tienes 1000 imagenes, tienes que pasarlas todas al storage para que funcione?

saludos y gracias a los dos por contestar.

davdi escribió:
logik0 escribió:Buenos dias,

seria interesante que postearas como lo resolvistes porque tengo el mismo problema. He puesto las imagenes como "content" como "recurso" pero sigue sin mostrarlas. Es un html que se ve en cualquier navegador.

Gracias


Las imágenes tienen que estar en el IsolatedStorage de la aplicación, no en el proyecto. Desde HTML no se puede cargar una imagen de un assembly.
Gracias  
Miembro ocasional
Miembro ocasional
Mensajes: 33 Agradecido: 0
17 May 2012, 17:31# 7

Exacto tienes que grabar a IsolatedStorage, tanto la pagina html, como las imagenes que estan en ella. Atraves de un ejemplo que vi por un foro adapte una funcion que se llama private void SaveFilesToIsoStore(string[] files) y que enviandole un array con los nombres de la pagina html y con el de las imagenes que lleva , las graba en IsolatedStorage.

Luego ya puedes cargar la pagina html con Navigate

Aqui te muestro el codigo

private void SaveFilesToIsoStore(string[] files)
{



IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForApplication();

if (false == isoStore.FileExists(files[0]))
{
foreach (string f in files)
{
StreamResourceInfo sr = Application.GetResourceStream(new Uri(f, UriKind.Relative));
using (BinaryReader br = new BinaryReader(sr.Stream))
{
byte[] data = br.ReadBytes((int)sr.Stream.Length);
SaveToIsoStore(f, data);
}
}
}
}

private void SaveToIsoStore(string fileName, byte[] data)
{
string strBaseDir = string.Empty;
string delimStr = "/";
char[] delimiter = delimStr.ToCharArray();
string[] dirsPath = fileName.Split(delimiter);

//Get the IsoStore.
IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForApplication();

//Re-create the directory structure.
for (int i = 0; i < dirsPath.Length - 1; i++)
{
strBaseDir = System.IO.Path.Combine(strBaseDir, dirsPath[i]);
isoStore.CreateDirectory(strBaseDir);
}

//Remove the existing file.
if (isoStore.FileExists(fileName))
{
isoStore.DeleteFile(fileName);
}

//Write the file.
using (BinaryWriter bw = new BinaryWriter(isoStore.CreateFile(fileName)))
{
bw.Write(data);
bw.Close();
}
}

Gracias  