21 de febrero de 2007

Mejoras importantes para los ejemplos que emplean degradados

Artículo original: IMPORTANT FIX FOR SAMPLES USING GRADIENTS
http://weblogs.foxite.com/vfpimaging/archive/2007/01/24/3178.aspx
Autor: Cesar Ch.
Traducido por: Ana María Bisbé York


Desafortunadamente, le ha ocurrido un error extraño, a alguna gente, mientras utilizaban algunos ejemplos para la creación de degradados que yo había colocado en mi blog.

Algunos reportaron que el código original creaba una imagen negra en lugar de un degradado. En otros casos, ocurría el error "No puede cargar 32-bit DLL GDIPLUS"

Esto ocurría porque VFP estaba utilizando las diferentes versiones de GDIPLUS.DLL instaladas en el PC. Una versión para dibujar el degradado y otra versión para apenas dibujar el degradado. Si el PC solamente tiene una versión de GDIPLUS.DLL instalada, incluso más de una copia, todo irá bien. Pero algunas aplicaciones necesitan una versión específica de esta biblioteca, y MS ha liberado más de 5 versiones hasta el momento. Después de un largo tiempo de pruebas he detectado esto utilizando el comando "DISPLAY DLLS"

Muchas gracias a todos los que han reportado este error, han probado y ayudado a encontrar el origen, especialmente a Andrew McNeill, Emerson Reed, Sergey Berezniker, Rui Nogueira, Randy Pearson, Sacchi. No puedo olvidar las más de 70 personas de mi hogar, la comunidad brasileña FoxBrasil, que muy amablemente probaron mucho código en entornos diferentes.

La reparación:

Cuando estamos utilizando
DECLARE Gdip..... IN GDIPLUS etc etc
Lo correcto es cambiar de "IN GDIPLUS"  por "IN GDIPLUS.DLL" En ciertas PC, esto está causando alguna confusión, y hace que VFP utilice más de una versión, especialmente si el usuario ya está utilizando _gdiplus.vcx o el ReportListener.

Vea que VFP declara Gdiplus utilizando ".DLL" para sus comandos internos, y también en _Gdiplus.vcx

En la Ayuda de VFP9 podemos encontrar:

"Para asegurar que está utilizando la copia correcta de GDIPLUS.DLL, utilice la sintaxis IN GDIPLUS.DLL sin ruta específica en sus sentencias DECLARE DLL."
http://msdn.microsoft.com/library/en-us/dv_foxhelp9/html/e11b3ffe-ee6b-4af3-94f8-7a5ed30ea83d.asp

Clase GRADOBJECTS

He publicado la nueva versión de la clase, que puede ser descargada desde este enlace:
http://www.geocities.com/macmarbr/gradobjects.zip

Además, espero publicar un nuevo escrito explicando todas las nuevas posibilidades, correcciones y ejemplos; pero, por el momento, esta versión va a ayudar a eliminar este error.

Escritos anteriores

He actualizado además todos los escritos anteriores
Gradient Objects with GDI+ Revisited
Gradient Backgrounds in your forms with GDI+ Part2
Gradient Backgrounds in your forms with GDI+

OUTLOOK BAR 2003:

El mismo problema ocurre utilizando esta gran clase. Para repararlo, abra por favor el archivo outlook2003bar.vcx, seleccione la clase "Outlook2003Bar". ¡ Lo siento Emerson !

En el método "CreateGradientImage", agregue, por favor, un ".DLL" en la declaración de la función GDI+ del degradado, así:
* Declarar API
Declare Long GdipCreateLineBrushI In GDIPlus.DLL ;
String point1, String point2, ;
Long color1, Long color2, ;
Long wrapMode, Long @lineGradient

BIBLIOTECA GDIPLUSX
Toda la biblioteca va a ser actualizada también.

Con suerte, para la próxima liberación - 0.07 Alpha ya habremos agregado esta corrección y algunas otras posibilidades y ejemplos interesantes. http://www.codeplex.com/VFPX/WorkItem/View.aspx?WorkItemId=7358

TODAS LAS DECLARACIONES GDIPLUS

Craig Boyd tiene un escrito fantástico en el que ofrece todas las 603 declaraciones de GDI+ (http://www.sweetpotatosoftware.com/SPSBlog/PermaLink,guid,d06cf377-c9ba-4eeb-93aa-b98ac115e895.aspx)

DISCULPAS NUEVAMENTE

Siento mucho todos los inconvenientes causados, y agradezco nuevamente por todos los comentarios y el apoyo tan importante que esta gran comunidad me ha brindado.

No hay comentarios. :

Publicar un comentario