locked
GDI+ y Windows 7 RRS feed

  • Pregunta

  • Recientemente desarrolle una funcion que dibuja una linea de tiempo grafica de gant donde cada día es un rectangulo con el numero del día en la parte superior.

    El codigo es muy sencillo:

    1.- calculo cuantos dias quiero dibujar
    2.- multiplico el ancho por dia por la cantidad de dias para establecer el ancho
    3.- comienzo un ciclo de 1 a la cantidad de dias
    4.- dibujo el rectangulo e incremento la posicion x para el siguente rectangulo
    5.- Hago algo parecido para dibujar el numero del dia

    Utilizo el Graphics del bitmap con funciones del tipo:
    -FillRectangle
    -DrawLine
    -Drwa String

    La función dibuja 300 dias en un abrir y cerrar de ojos

    El problema es que cuando ejecuto el programa en Windows XP o Vista lo hace en menos de 1 segundo pero en Windows 7 tarda cerca de 6 minutos. A que se debera?

    He intentado lo siguiente:
    - Compilar con el Framework 3, 2.5 y 2
    - Quitar el tema de Aero
    - Comenté todas las funciones "FillRectangle, DrawLine, DrawString" y completa el ciclo en 1 segundo por lo tanto el problema esta en el dibujado de graficos

    Espero alguien sepa que puede ser!

    viernes, 10 de julio de 2009 3:56

Respuestas

  • Hola,
    Bueno antes que nada te comento que no me especializo en el uso de gráficos, sin embargo cuando estuve estudiando y profundizando sobre lo nuevo de Windows, .NET Framework entre otros esta mencionado WPF.

    Windows Presentation Foundation de una forma muy práctica es una nueva "forma de pintar Pixeles en pantalla", se basa en vectores a diferencia de GDI+ que se basa en mapas de bits (pixeles), es más eficiente el uso de vectores tanto algorítmica como matemáticamente. Ahora en base a tu pregunta, me parece que se debe a que el engine de Windows 7 ha de estar mucho más orientado a esta nueva forma de pintar pixeles que sistemas operativos anteriores (Vista es una especie de híbrido, entre GDI y Vectores por así decirlo la transición)

    Pero habría que inspeccionar tu código, tal vez hace un uso de recursos de una manera que en Windows 7 ya no es compatible o se considera obsoleto. Honestamente no lo se, pero me da la impresión que va por ahí la cosa, pues como sabemos el .NET Framework ha evolucionado considerablemente. Espero haberte dado una idea más que una respuesta concreta.

    Saludos!
    Microsoft Certified Technology Specialist .NET 3.5 WPF Application Development
    Profesionista Microsoft VIP México
    Blog Técnico
    World Wide Finalist Imagine Cup 2007
    Microsoft Student Partner
    C#, WPF, WCF
    LinkedIn
    lunes, 13 de julio de 2009 3:41

Todas las respuestas

  • Hola,
    Bueno antes que nada te comento que no me especializo en el uso de gráficos, sin embargo cuando estuve estudiando y profundizando sobre lo nuevo de Windows, .NET Framework entre otros esta mencionado WPF.

    Windows Presentation Foundation de una forma muy práctica es una nueva "forma de pintar Pixeles en pantalla", se basa en vectores a diferencia de GDI+ que se basa en mapas de bits (pixeles), es más eficiente el uso de vectores tanto algorítmica como matemáticamente. Ahora en base a tu pregunta, me parece que se debe a que el engine de Windows 7 ha de estar mucho más orientado a esta nueva forma de pintar pixeles que sistemas operativos anteriores (Vista es una especie de híbrido, entre GDI y Vectores por así decirlo la transición)

    Pero habría que inspeccionar tu código, tal vez hace un uso de recursos de una manera que en Windows 7 ya no es compatible o se considera obsoleto. Honestamente no lo se, pero me da la impresión que va por ahí la cosa, pues como sabemos el .NET Framework ha evolucionado considerablemente. Espero haberte dado una idea más que una respuesta concreta.

    Saludos!
    Microsoft Certified Technology Specialist .NET 3.5 WPF Application Development
    Profesionista Microsoft VIP México
    Blog Técnico
    World Wide Finalist Imagine Cup 2007
    Microsoft Student Partner
    C#, WPF, WCF
    LinkedIn
    lunes, 13 de julio de 2009 3:41
  • Hola,
    He considerado usar WPF, el detalle es que era un codigo viejo hecho con el framework 2.0 y pues de usar WPF tendria que rediseñar esa parte del código.

    Me dedique a la tarea de realizar una prueba mas que a mi parecer era inecesaria; el codigo lo tenia en Visual Basic y lo reescribí en C# tal cual estaba. Mi sorpresa es que no solo funcionó, sino que lo hizo mas rápido que la version de código que tenia en VB.

    Hasta donde tenía entendido lo que hace el framework es convertir cualquier lenguaje a un lenguaje común. Desde mi punto de vista parece que hay algun problema al procesar  el GDI desde VB en Windows 7.

    Muchas gracias por tus sugerencias.

    Saludos!

    lunes, 13 de julio de 2009 16:59