Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Keyen Night en 24 Enero 2010, 19:23 pm



Título: Error con Sub
Publicado por: Keyen Night en 24 Enero 2010, 19:23 pm
Tengo un programa que he estado haciendo y mejorando de un autologger de un juego online llamado Tibia, hoy se me ocurrio agregarle progressbar personalizadas pero a mi manera :xD con este sub que probe en un proyecto nuevo vacio que cree para solo probarlo:
Código
  1.    Public Shared Sub LoadImage(ByVal Pic As PictureBox, ByVal Percent As Integer)
  2.        Dim LoadedBar As New Bitmap(My.Resources.Bar, Pic.Width, Pic.Height)
  3.        Dim Img As New Bitmap(Pic.Width, Pic.Height)
  4.  
  5.        Select Case Percent
  6.            Case 100
  7.                Pic.Image = LoadedBar
  8.            Case 0
  9.                Pic.Image = Nothing
  10.            Case Else
  11.                For X As Integer = 0 To (LoadedBar.Width * (Percent / 100) - 1)
  12.                    For Y As Integer = 0 To (LoadedBar.Height - 1)
  13.                        Img.SetPixel(X, Y, LoadedBar.GetPixel(X, Y))
  14.                    Next
  15.                Next
  16.                Pic.Image = Img
  17.        End Select
  18.  
  19.        Pic.Refresh()
  20.        Img = Nothing
  21.        LoadedBar = Nothing
  22.    End Sub

Consiste en cargar un % de una imagen que obviamente es la barra de progreso completa en un picturebox esto da la sensación de una progressbar; la imagen está es los resources del programa como Bar.png en el proyecto vacio de prueba sirve perfectamente pero si lo pruebo en mi proyecto, se cierra el form desde donde llame el sub y da el siguiente error:
El valor no puede ser nulo. Nombre del parámetro: image
En la linea:
Código
  1. Dim LoadedBar As New Bitmap(My.Resources.Bar, Pic.Width, Pic.Height)
Pero este error no da en el proyecto vacio de prueba, ya me tiene azul y no se que hacer :-(


Título: Re: Error con Sub
Publicado por: Skeletron en 24 Enero 2010, 19:30 pm
EN el depurador, fijate el valor de Pic. Si es NULL.. es porque ahí esta el problema..


Título: Re: Error con Sub
Publicado por: Keyen Night en 24 Enero 2010, 19:57 pm
Resolvi así:
Código
  1.    Public Shared Sub LoadImage(ByVal Pic As PictureBox, ByVal Percent As Integer)
  2.        Dim _
  3.        LoadedBar As New Bitmap("C:\Bar.png"), _
  4.        ResizedBar As New Bitmap(LoadedBar, Pic.Size.Width, Pic.Size.Height), _
  5.        Img As New Bitmap(Pic.Size.Width, Pic.Size.Height)
  6.  
  7.        Select Case Percent
  8.            Case 100
  9.                Pic.Image = LoadedBar
  10.            Case 0
  11.                Pic.Image = Nothing
  12.            Case Else
  13.                For X As Integer = 0 To (ResizedBar.Width * (Percent / 100) - 1)
  14.                    For Y As Integer = 0 To (ResizedBar.Height - 1)
  15.                        Img.SetPixel(X, Y, ResizedBar.GetPixel(X, Y))
  16.                    Next
  17.                Next
  18.                Pic.Image = Img
  19.        End Select
  20.  
  21.        Pic.Refresh()
  22.        Img = Nothing
  23.        LoadedBar = Nothing
  24.    End Sub
Pero no quiero cargarlo desde una ruta quiero cargar desde My.Resources si llamo a mi My.Resources me dice Referencia no establecida como instancia de objecto, no se supone que el objeto como resource ya está creado?


Título: Re: Error con Sub
Publicado por: seba123neo en 24 Enero 2010, 21:10 pm
a mi no me queda el codigo igual cuando agrego una imagen a un recurso...debes anteponer el nombre del recurso algo asi..

Código
  1. Dim LoadedBar As New Bitmap(My.Resources.Resource1.nombreimagen)
  2.  

donde Resource1 es el nombre del recurso. y en tu caso pusiste
Código
  1. My.Resources.nombreimagen

es un recurso el que tenes ??

proba borrar el que tenes y insertar uno nuevo Menu->Proyecto->añadir nuevo item y ahi busca "archivo de recurso", insertale la imagen desde "añadir archivo existente"..

saludos.


Título: Re: Error con Sub
Publicado por: Keyen Night en 24 Enero 2010, 21:56 pm
No te entendi muy bien, mi recurso es una imagen PNG llamada Bar que aparece directamente en My.Resources como My.Resources.Bar, además ahora me he dado cuenta que no me deja manipular ningún resource me dice siempre el mismo error "Referencia no establecida como instancia de un objeto"


Título: Re: Error con Sub
Publicado por: seba123neo en 24 Enero 2010, 22:48 pm
me pones una captura del panel explorador de soluciones, donde estan los formularios etc.. por favor..es que es practicamente imposible que puedas acceder al nombe de la iamgen sin anteponer el nombre del recurso...imaginate si tenes 20 recursos diferentes, como haces para acceder a lo que tiene cada uno.

¿alguien mas lo ve asi o soy el unico?


Título: Re: Error con Sub
Publicado por: Keyen Night en 24 Enero 2010, 23:14 pm
(http://img683.imageshack.us/img683/111/exsol.png)

Allí está ;)


Título: Re: Error con Sub
Publicado por: seba123neo en 24 Enero 2010, 23:23 pm
pues esta todo bien, mira yo hice un proyecto nuevo y agrege el primer codigo que pusiste y una imagen de recurso de prueba, y el ejemplo me funciono, crea un progressbar segun el valor que le pongas, y cuando la cargue lo hice asi.

Código
  1. Dim LoadedBar As New Bitmap(My.Resources.Resource1.Bar, Pic.Width, Pic.Height)

donde Resource1 es el nombre del recurso que contiene la imagen, sin ponerle eso te lo subraya como error...

saludos.