Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/04/2011, 18:13
Dtc
 
Fecha de Ingreso: marzo-2011
Ubicación: México
Mensajes: 39
Antigüedad: 13 años, 9 meses
Puntos: 1
Pregunta graphics.h - Cerrar modo gráfico y regresar a proceso normal del programa en consola

Saludos.
Ando manejando un programa que grafica unos datos que anteriormente el mismo programa calcula, por lo que he estado utilizando graphics.h, aunque me ha aparecido un problema.
Le paso a la función los parámetros necesarios para trazar la gráfica y lo hace correctamente, pero el problema viene al intentar continuar con el programa, ya que al intentar regresar al modo consola y salir del modo de vídeo, me aparece una pantalla negra con un _ parpadeando y ya no puedo salir de esa pantalla completa y continuar con el programa de forma normal.
Por ejemplo, con este código:

Código C:
Ver original
  1. #include<graphics.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <dos.h>
  5.  
  6. void grafico(void);
  7. void hacergrafico1(float dominio1, float dominio2, float rango1, float rango2);
  8. float chale, nel, cor, jor;
  9.  
  10. main()
  11. {
  12. chale=-2;
  13. nel=4;
  14. cor=-3;
  15. jor=3;
  16. printf("presiona algo para seguirle");
  17. delay(300);
  18. hacergrafico1(chale, nel, cor, jor);
  19. printf("final");
  20. }
  21.  
  22. void grafico()
  23.           {
  24.                 int drive=DETECT,a,error;
  25.     initgraph(&drive,&a,"C:\\BC5\\BGI");
  26.     error=graphresult();
  27.     if (error != grOk)
  28.     {
  29.         printf ("Error al cargar modo grafico");
  30.         printf ("\nPresione una tecla para continuar");
  31.         system("pause");
  32.         exit(1);
  33.     }
  34.           }
  35.  
  36. void hacergrafico1(float dominio1, float dominio2, float rango1, float rango2)
  37.                  {
  38.  
  39. /*Convirtiendo los numeros de deminio y rango a pixeles y guardandolos en las variables para graficar*/
  40. int x1, y1, x2, y2;
  41. x1=dominio1*10+200;
  42. y1=rango1*-10+200;
  43. x2=dominio2*10+200;
  44. y2=rango2*-10+200;
  45. delay(200);
  46. /*Se dibuja el plano cartesiano graduado*/
  47.     /*Se invoca al modo gráfico */
  48. grafico();
  49. delay(200);
  50. /*Dibuja las 2 lineas del plano y el punto central*/
  51. line(200,0,200,400);
  52. line(0,200,400,200);
  53. putpixel(200,200,0);
  54. /*Dibuja la graduación de la linea derecha*/
  55. line(210,200,210,203);
  56. line(220,200,220,203);
  57. line(230,200,230,203);
  58. line(240,200,240,203);
  59. line(250,200,250,203);
  60. line(260,200,260,203);
  61. line(270,200,270,203);
  62. line(280,200,280,203);
  63. line(290,200,290,203);
  64. line(300,200,300,203);
  65. line(310,200,310,203);
  66. line(320,200,320,203);
  67. line(330,200,330,203);
  68. line(340,200,340,203);
  69. line(350,200,350,203);
  70. line(360,200,360,203);
  71. line(370,200,370,203);
  72. line(380,200,380,203);
  73. line(390,200,390,203);
  74. line(400,200,400,203);
  75. /*Dibuja la graduación de la linea izquierda*/
  76. line(190,200,190,203);
  77. line(180,200,180,203);
  78. line(170,200,170,203);
  79. line(160,200,160,203);
  80. line(150,200,150,203);
  81. line(140,200,140,203);
  82. line(130,200,130,203);
  83. line(120,200,120,203);
  84. line(110,200,110,203);
  85. line(100,200,100,203);
  86. line(90,200,90,203);
  87. line(80,200,80,203);
  88. line(70,200,70,203);
  89. line(60,200,60,203);
  90. line(50,200,50,203);
  91. line(40,200,40,203);
  92. line(30,200,30,203);
  93. line(20,200,20,203);
  94. line(10,200,10,203);
  95. line(0,200,0,203);
  96. /*Dibuja la graduación de la linea de arriba*/
  97. line(200,190,203,190);
  98. line(200,180,203,180);
  99. line(200,170,203,170);
  100. line(200,160,203,160);
  101. line(200,150,203,150);
  102. line(200,140,203,140);
  103. line(200,130,203,130);
  104. line(200,120,203,120);
  105. line(200,110,203,110);
  106. line(200,100,203,100);
  107. line(200,90,203,90);
  108. line(200,80,203,80);
  109. line(200,70,203,70);
  110. line(200,60,203,60);
  111. line(200,50,203,50);
  112. line(200,40,203,40);
  113. line(200,30,203,30);
  114. line(200,20,203,20);
  115. line(200,10,203,10);
  116. line(200,0,203,0);
  117. /*Dibuja la graduación de la linea de abajo*/
  118. line(200,210,197,210);
  119. line(200,220,197,220);
  120. line(200,230,197,230);
  121. line(200,240,197,240);
  122. line(200,250,197,250);
  123. line(200,260,197,260);
  124. line(200,270,197,270);
  125. line(200,280,197,280);
  126. line(200,290,197,290);
  127. line(200,300,197,300);
  128. line(200,310,197,310);
  129. line(200,320,197,320);
  130. line(200,330,197,330);
  131. line(200,340,197,340);
  132. line(200,350,197,350);
  133. line(200,360,197,360);
  134. line(200,370,197,370);
  135. line(200,380,197,380);
  136. line(200,390,197,390);
  137. line(200,400,197,400);
  138. /*Se escriben los numeros de graduacion en la barra derecha*/
  139. settextstyle(2,0,2);
  140. outtextxy(210, 205, "1");
  141. outtextxy(220, 205, "2");
  142. outtextxy(230, 205, "3");
  143. outtextxy(240, 205, "4");
  144. outtextxy(250, 205, "5");
  145. outtextxy(260, 205, "6");
  146. outtextxy(270, 205, "7");
  147. outtextxy(280, 205, "8");
  148. outtextxy(290, 205, "9");
  149. outtextxy(300, 205, "10");
  150. outtextxy(310, 205, "11");
  151. outtextxy(320, 205, "12");
  152. outtextxy(330, 205, "13");
  153. outtextxy(340, 205, "14");
  154. outtextxy(350, 205, "15");
  155. outtextxy(360, 205, "16");
  156. outtextxy(370, 205, "17");
  157. outtextxy(380, 205, "18");
  158. outtextxy(390, 205, "19");
  159. outtextxy(400, 205, "20");
  160. /*Se escriben los numeros de graduacion de la barra izquierda*/
  161. outtextxy(190, 205, "1");
  162. outtextxy(180, 205, "2");
  163. outtextxy(170, 205, "3");
  164. outtextxy(160, 205, "4");
  165. outtextxy(150, 205, "5");
  166. outtextxy(140, 205, "6");
  167. outtextxy(130, 205, "7");
  168. outtextxy(120, 205, "8");
  169. outtextxy(110, 205, "9");
  170. outtextxy(100, 205, "10");
  171. outtextxy(90, 205, "11");
  172. outtextxy(80, 205, "12");
  173. outtextxy(70, 205, "13");
  174. outtextxy(60, 205, "14");
  175. outtextxy(50, 205, "15");
  176. outtextxy(40, 205, "16");
  177. outtextxy(30, 205, "17");
  178. outtextxy(20, 205, "18");
  179. outtextxy(10, 205, "19");
  180. outtextxy(0, 205, "20");
  181. /*Se escriben los numeros de graduación de la barra de arriba*/
  182. outtextxy(205, 190, "1");
  183. outtextxy(205, 180, "2");
  184. outtextxy(205, 170, "3");
  185. outtextxy(205, 160, "4");
  186. outtextxy(205, 150, "5");
  187. outtextxy(205, 140, "6");
  188. outtextxy(205, 130, "7");
  189. outtextxy(205, 120, "8");
  190. outtextxy(205, 110, "9");
  191. outtextxy(205, 100, "10");
  192. outtextxy(205, 90, "11");
  193. outtextxy(205, 80, "12");
  194. outtextxy(205, 70, "13");
  195. outtextxy(205, 60, "14");
  196. outtextxy(205, 50, "15");
  197. outtextxy(205, 40, "16");
  198. outtextxy(205, 30, "17");
  199. outtextxy(205, 20, "18");
  200. outtextxy(205, 10, "19");
  201. outtextxy(205, 0, "20");
  202. /*Se escriben los numeros de graduación de la barra de abajo*/
  203. outtextxy(190, 220, "2");
  204. outtextxy(190, 230, "3");
  205. outtextxy(190, 240, "4");
  206. outtextxy(190, 250, "5");
  207. outtextxy(190, 260, "6");
  208. outtextxy(190, 270, "7");
  209. outtextxy(190, 280, "8");
  210. outtextxy(190, 290, "9");
  211. outtextxy(190, 300, "10");
  212. outtextxy(190, 310, "11");
  213. outtextxy(190, 320, "12");
  214. outtextxy(190, 330, "13");
  215. outtextxy(190, 340, "14");
  216. outtextxy(190, 350, "15");
  217. outtextxy(190, 360, "16");
  218. outtextxy(190, 370, "17");
  219. outtextxy(190, 380, "18");
  220. outtextxy(190, 390, "19");
  221. outtextxy(190, 400, "20");
  222. /*Fin de plano cartesiano graduado*/
  223. /*Trazar los dominios y el rango para función de 2 dominios*/
  224. /*Se traza la linea de la función*/
  225. setcolor(2);
  226. line(x1,y1,x2,y2);
  227.  
  228.  
  229. printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n*Funciomatico*\n*Por -DTC-*\n---Grafica de la funcion");
  230. closegraph();
  231.  
  232.                }

Al querer salir del modo gráfico a pantalla completa y continuar con el programa, solo se quita la gráfica, pero se imprime "final" en una pantalla negra y después un _ parpadeante.

¿Alguna idea para solucionar esto?


Muchas gracias de antemano
__________________
La Web del Dtc
http://www.dtcsrni.tk
DtcSrni Technologies
http://technologies.dtcsrni.tk

Última edición por Dtc; 25/04/2011 a las 21:00