Page 1 of 1

error en tgraph

Posted: Thu Nov 02, 2006 7:07 pm
by Francisco Horta
me he percatado que al imprimir un grafica pero en tipo: "puntos y lineas en 2d" truena el programa, con "barras y pie en 2d y 3d" no pasa, alguna sugerencia?
http://img119.imageshack.us/img119/6479 ... icafl3.jpg
gracias
Paco

Posted: Fri Nov 03, 2006 4:02 am
by Alfredo Arteaga
Mmm... ya ví.

El culpable el pintado a doble buffer, se está perdiendo el recurso hPen. Pero no se como se come eso, ya Antonio me había comentado una solución pero no recuerdo.

Posted: Fri Nov 03, 2006 6:30 pm
by Francisco Horta
ok, esperemos a ver que resulta de la memoria,
gracias, alfredo, de cualquier forma pues intentare mandarlo grabar a un bmp y luego imprimir ese bmp, de momento es lo que se me ocurre para darle solucion, aunque pues no la considero correcta.
por cierto hice unas pequeñas modificaciones en la clase para los graficos tipo pie, que se salia del recuadro y se comia parte de los subtitulos, por ahi me atrevi a moverle y parece que ya quedo...
salu2
paco

Posted: Sat Nov 04, 2006 3:01 pm
by Alfredo Arteaga
Te agradeceré me hagas llegar esos ajustes al pie. Saludos Paco.

Posted: Mon Nov 06, 2006 8:04 pm
by Francisco Horta
enviada...
salu2
paco

Posted: Mon Nov 06, 2006 8:15 pm
by jose_murugosa
Francisco, sería excelente que pudieras poner la clase corregida con un link de hyperupload en Utilities/Utilidades, para el beneficio de todos.

Buen trabajo,

Posted: Tue Nov 07, 2006 6:35 am
by Francisco Horta
que tal Jose,
no me trevi a publicarla ya que me quieria serciorar con el master de la lib que la revisara y le diera el vo.bo., ya que no me considero un aceptable modificador de clases, siendo asi estoy seguro que alfredo pronto la revisara y la podra liberar y que nos la publique por aqui. de cualquier forma si la necesitas te la envio con mucho gusto. ;-)
salu2
Paco

Posted: Tue Nov 07, 2006 6:15 pm
by jose_murugosa
Francisco Horta wrote:que tal Jose,
no me trevi a publicarla ya que me quieria serciorar con el master de la lib que la revisara y le diera el vo.bo., ya que no me considero un aceptable modificador de clases, siendo asi estoy seguro que alfredo pronto la revisara y la podra liberar y que nos la publique por aqui. de cualquier forma si la necesitas te la envio con mucho gusto. ;-)
salu2
Paco
Francisco, gracias por tu aclaración, de hecho me parece muy propio.

Posted: Thu Nov 09, 2006 2:48 pm
by Alfredo Arteaga
Listo!

- El culpable del error en impresión de gráficas tipo Puntos y Líneas era ::Circle(), se agregó un método local.
- Se modificó la presentación de valores en todos los gráficos.
- Se depuró la impresión del gráfico tipo torta o pie.
- ... y otros detalles no significativos.

Aun hay detalles que podrían mejorarse, ya nuestro colega David desarrollo una lib, esto seguirá siendo una clase.

Disfrútenla.

http://www.despachoarteaga.com.mx/tgraph.zip

Alfredo

Posted: Mon Nov 13, 2006 5:46 pm
by Paco Garcia
Hola Alfredo,

He estado viendo tu maginifica clase TGraph y no puedo mas que darte la enhorabuena. Magnifico trabajo.

Hay una cosa que queria comentarte. Cuando haces grafico de pastel, las líneas no separan bien los trozos de tarta.

Creo que el problema es que pintas las separaciones "a mano" y creo que hay que dejar al sistema que las pinte solas:

Mas o menos por la línea 1240 hay:

Code: Select all

      IF (nAngle-nAngT)>1
         hPen2 := CreatePen( PS_SOLID, 1 , 0 )
         hOldPen2 := SelectObject( hMemCDC, hPen2 )
         Pie( hMemCDC, aGRect[1], aGRect[2], aGRect[3]+1, aGRect[4]+1, ;
                       aPT2[2], aPT2[1], aPT1[2], aPT1[1] )
         SelectObject( hMemCDC, hPen2 )
         DeleteObject( hPen2 )
      ENDIF
      SelectObject( hMemCDC, hPen )
      IF Len( aItems ) > 1
         //MoveTo( hMemCDC, aPT1[1], aPT1[2] )
         //LineTo( hMemCDC, ((aGRect[4]-aGRect[2]) / 2) + aGRect[2], ; // Center
         //                 ((aGRect[3]-aGRect[1]) / 2) + aGRect[1] )
         //MoveTo( hMemCDC, aPT2[1], aPT2[2] )
         //LineTo( hMemCDC, ((aGRect[4]-aGRect[2]) / 2) + aGRect[2], ; // Center
         //                 ((aGRect[3]-aGRect[1]) / 2) + aGRect[1] )
...


Si comentas esas líneas y cuando pintas el "Pie" le seleccionas un pincel, te pinta solo las separaciones. También, si haces esto, no es necesario pintar la elipse.

Un saludo

Posted: Mon Nov 13, 2006 6:53 pm
by Alfredo Arteaga
Perfecto!, gracias Paco(s).

Si alguién más ha realizado cambios y considera que deben estar incluidos haganlos llegar a mi correo (abajo) y los incluiremos para todos.

Definitivamente una cabeza piensa menos que muchas.