Error con Sub

Iniciado por Keyen Night, 24 Enero 2010, 19:23 PM

0 Miembros y 1 Visitante están viendo este tema.

Keyen Night

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 (vbnet) [Seleccionar]
    Public Shared Sub LoadImage(ByVal Pic As PictureBox, ByVal Percent As Integer)
        Dim LoadedBar As New Bitmap(My.Resources.Bar, Pic.Width, Pic.Height)
        Dim Img As New Bitmap(Pic.Width, Pic.Height)

        Select Case Percent
            Case 100
                Pic.Image = LoadedBar
            Case 0
                Pic.Image = Nothing
            Case Else
                For X As Integer = 0 To (LoadedBar.Width * (Percent / 100) - 1)
                    For Y As Integer = 0 To (LoadedBar.Height - 1)
                        Img.SetPixel(X, Y, LoadedBar.GetPixel(X, Y))
                    Next
                Next
                Pic.Image = Img
        End Select

        Pic.Refresh()
        Img = Nothing
        LoadedBar = Nothing
    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 (vbnet) [Seleccionar]
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 :-(
La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...

Skeletron

EN el depurador, fijate el valor de Pic. Si es NULL.. es porque ahí esta el problema..

Keyen Night

Resolvi así:
Código (vbnet) [Seleccionar]
    Public Shared Sub LoadImage(ByVal Pic As PictureBox, ByVal Percent As Integer)
        Dim _
        LoadedBar As New Bitmap("C:\Bar.png"), _
        ResizedBar As New Bitmap(LoadedBar, Pic.Size.Width, Pic.Size.Height), _
        Img As New Bitmap(Pic.Size.Width, Pic.Size.Height)

        Select Case Percent
            Case 100
                Pic.Image = LoadedBar
            Case 0
                Pic.Image = Nothing
            Case Else
                For X As Integer = 0 To (ResizedBar.Width * (Percent / 100) - 1)
                    For Y As Integer = 0 To (ResizedBar.Height - 1)
                        Img.SetPixel(X, Y, ResizedBar.GetPixel(X, Y))
                    Next
                Next
                Pic.Image = Img
        End Select

        Pic.Refresh()
        Img = Nothing
        LoadedBar = Nothing
    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?
La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...

seba123neo

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 (vbnet) [Seleccionar]
Dim LoadedBar As New Bitmap(My.Resources.Resource1.nombreimagen)


donde Resource1 es el nombre del recurso. y en tu caso pusiste
Código (vbnet) [Seleccionar]
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.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

Keyen Night

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"
La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...

seba123neo

#5
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?
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

Keyen Night

La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...

seba123neo

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 (vbnet) [Seleccionar]
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.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson