none
Imagen de fondo en el form ralentiza la aplicación, ¿por qué? RRS feed

  • Pregunta

  • Hola,

    por hacer una aplicación más vistosa, he creado mis windows forms con una imagen de fondo, de 28 KB de tamaño y de 958 de ancho y 384 de alto.  El problema es que desde que le puse esta imagen, la aplicación me va más lento.

    ¿hay alguna forma de resolver esto, sin tener que quitar la imagen?

    Gracias, un saludo.

    sábado, 4 de septiembre de 2010 20:51

Todas las respuestas

  • hola

    es bastante raro el problema, yo he usado imagenes en los formularios, pero ojo en los formularios MDI, o sea en el MDIContaniner, una imagenes con los logos de las empresas, y la performance no se vio afectada

    en tu caso las imagenes estan en cada formulario o solo en uno que actua de contenedor del resto

    puede que el pintado del formulario este influyendo

    esta imagen la defines por codigo o mediante el diseñador ? lo rpegunto ams que nada para saber si es estatica

    estas poniendo la imagen dentro de un recurso de la aplciacion, o lo tomas de una archivo externo ?

    esto ultimo puede afectar si la imagen no esta contenda dentro de la aplicacion, verifica si puede cargarla dsde un .resx

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    domingo, 5 de septiembre de 2010 3:47
  • En todos los forms tengo cargada la misma imagen, y uno a uno se la voy poniendo mediante la opción BackgroundImage de las propiedades. La imagen la tengo en la carpeta Resources de mi aplicación, así que la tomo de la lista de Project Resource file. He de decir que estoy haciendo el proyecto bajo 2 máquinas virtuales, una para el cliente y otra para el servidor. De todas formas, cuando no tenía la imagen de fondo, la aplicación funcionaba más rápidamente.
    domingo, 5 de septiembre de 2010 15:57
  • bien intenta realizar el pintado de los formularios por medio del evento OnPaint del formulario este lo puedes sobreescribir y enviarle un nuevo pintado por medio de la clase Graphics.

     

     protected override void OnPaint(PaintEventArgs e)
        {
          base.OnPaint(e);
    
          e.Graphics.DrawImageUnscaled(Image.FromFile("RutaImagen"), new Point(10, 30)); 
        }
    
    Espero sea de Utilidad.
    • Propuesto como respuesta Sergio A Vargas domingo, 5 de septiembre de 2010 21:18
    domingo, 5 de septiembre de 2010 21:18