none
Cambiar ImageBrush de un Rectangle.Fill desde el código de clase? WPF RRS feed

  • Pregunta

  • Buenas, me gustaría saber si es posible que al hacer clic en un botón, cambie el ImageBrush de un Rectangle.Fill.

    Mi código:

    <Button Click="Cambiar ImageSource">Cambiar ImageSource</Button>

    <Rectangle Name="secImage">
       <Rectangle.Fill>
           <ImageBrush ImageSource="Images/Colinas_azules.jpg"/>
       </Rectangle.Fill>
    </Rectangle>

    Me gustaría poder cambiar el ImageSource="Images/Colinas_azules.jpg", es posible?

    Muchas gracias
    lunes, 15 de marzo de 2010 11:10

Respuestas

  • Hola oscuros.

    Tienes varias opciones, te pongo 2 de ellas:

    tal cual lo tienes, en el codigo debes poner algo como esto:

    secImage.Fill = new ImageBrush(new BitmapImage(new Uri(@"..\..\img\barco2.bmp", UriKind.Relative)));

    La URI, es relativa al directorio donde reside el ejecutable.


    Otra opcion es ponerle nombre al ImageBrush, de esta forma:

    <ImageBrush x:Name="brush" ImageSource="img/barco1.bmp"/>

    y luego en el codigo puedes acceder a el directamente:

    brush.ImageSource = new BitmapImage(new Uri(@"..\..\img\barco2.bmp", UriKind.Relative));

    o mediante su propiedad de dependencia:

    brush.SetValue(ImageBrush.ImageSourceProperty, new BitmapImage(new Uri(@"..\..\img\barco2.bmp", UriKind.Relative)));

    Mas o menos estas son 3 formas de hacer lo mismo.







    Saludos
    David González
    • Marcado como respuesta chisigo lunes, 15 de marzo de 2010 12:06
    lunes, 15 de marzo de 2010 11:50

Todas las respuestas

  • Hola oscuros.

    Tienes varias opciones, te pongo 2 de ellas:

    tal cual lo tienes, en el codigo debes poner algo como esto:

    secImage.Fill = new ImageBrush(new BitmapImage(new Uri(@"..\..\img\barco2.bmp", UriKind.Relative)));

    La URI, es relativa al directorio donde reside el ejecutable.


    Otra opcion es ponerle nombre al ImageBrush, de esta forma:

    <ImageBrush x:Name="brush" ImageSource="img/barco1.bmp"/>

    y luego en el codigo puedes acceder a el directamente:

    brush.ImageSource = new BitmapImage(new Uri(@"..\..\img\barco2.bmp", UriKind.Relative));

    o mediante su propiedad de dependencia:

    brush.SetValue(ImageBrush.ImageSourceProperty, new BitmapImage(new Uri(@"..\..\img\barco2.bmp", UriKind.Relative)));

    Mas o menos estas son 3 formas de hacer lo mismo.







    Saludos
    David González
    • Marcado como respuesta chisigo lunes, 15 de marzo de 2010 12:06
    lunes, 15 de marzo de 2010 11:50
  • Muchas gracias David_González, me funciona bien.

    Oye y si la imagen nueva estuviese en un Array, como pondría lo de la Uri?
    lunes, 15 de marzo de 2010 12:06
  • ¿en un array de que tipo?.

    Si ya tienes todas las imagenes en un array, solo tienes que asignar la referencia al objeto dentro del array por que se supone que ya las has cargado.

    No se como tienes implementado lo del array, pon algo de codigo que lo vea.

    Saludos
    David González
    lunes, 15 de marzo de 2010 13:25
  • Es un Array de FileInfo, ya me ayudaste en otra pregunta así que ya está hecho.

     

    Muchas gracias

    lunes, 22 de marzo de 2010 8:38