Pregunta

Tengo un formulario en C# que tiene un botón que, cuando se hace clic, quiero que la imagen de fondo recorra un conjunto de imágenes (que tengo como recursos para el proyecto).Las imágenes se denominan '_1', '_2', etc.y cada vez que hago clic en el botón quiero que su imagen de fondo aumente a la siguiente y vuelva a "_1" cuando llegue al nivel más alto.¿Hay alguna forma de hacer esto?

Intenté conseguir button1.BackgroundImage.ToString() pero eso rinde System.Drawing.Bitmap en lugar de Resources._1 como estaba pensando (en cuyo caso podría simplemente obtener el último carácter y activarlo para cambiar el fondo a la nueva imagen apropiada).

Gracias por tu ayuda.

¿Fue útil?

Solución

¿Por qué no pones las imágenes en una matriz?

Otros consejos

Puede crear una subclase de Button y anular la propiedad BackgroundImage para poder realizar un mejor seguimiento del recurso actual que representa la imagen.También puedes anular el método onclick para manejar internamente el desplazamiento a la siguiente imagen, aunque eso puede ser un poco extraño si los recursos se manejan fuera de tu clase de botón derivada.

class YourClass
{
    private IEnumerator<Image> enumerator;

    YourClass(IEnumerable<Image> images)
    {
        enumerator = (from i in Enumerable.Range(0, int.Max)
                      from image in images
                      select image).GetEnumerator();
        enumerator.MoveNext();
    }

    public Image CurrentImage { get { return enumerator.Current; } }

    public void OnButtonClick() { enumerator.MoveNext(); }
}

Puede utilizar este código como clase de respaldo para su control bajo el supuesto de que el usuario no hará clic en el botón más de dos mil millones de veces.

Solo tenga en cuenta que una vez creada esta clase no puede modificar la lista de imágenes dada afuera.Si desea hacer tales cosas, debe implementar un patrón desechable y desechar el enumerador en consecuencia.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top