problemas con graficos
el problema es que alcompilar el programa me sale el siguiente error
fatal..incldegraphics.h 19: error directive:BGI graphics not supported under Windows
el programa es
#include <graphics.h>
#include <iostream.h>
int main(){
ellipse(3,3,3,3);
return 0;
}
tengo windows xp
aver quien puede solucionar el problema
fatal..incldegraphics.h 19: error directive:BGI graphics not supported under Windows
el programa es
#include <graphics.h>
#include <iostream.h>
int main(){
ellipse(3,3,3,3);
return 0;
}
tengo windows xp
aver quien puede solucionar el problema
abres la carpeta bgi de c copia todos los archibos y los pegas en bin
Cambia el Directorio de Trabajo a TCBGI, para que el programa se ejecute en la biblioteca gráfica y el problema se corregirá
Hola: Ya lei todos sus consejos y la vdd, resolvieron mi problema solo quiero retroalimentar ciertas cosas,
Si tienen la version C++ 5.01 esta crea una carpeta por defecto de "c:BC5"
por lo que dicen de tcbgi solo tienen que cambiar en la inicializacion de graficos a el directorio bgi en BC5:
EJEMPLO:
initgraph(&gdriver, &gmode, "C:\BC5\BGI");
Espero que les sea de utilidad a quien tengas esta version de c++
bye y gracias por su ayuda
Si tienen la version C++ 5.01 esta crea una carpeta por defecto de "c:BC5"
por lo que dicen de tcbgi solo tienen que cambiar en la inicializacion de graficos a el directorio bgi en BC5:
EJEMPLO:
initgraph(&gdriver, &gmode, "C:\BC5\BGI");
Espero que les sea de utilidad a quien tengas esta version de c++
bye y gracias por su ayuda
OK . . . TU ERROR ESTA EN QUE NO INICIAS EL MODO GRAFICO ( SI NO LO SABES INICIAZAR, EN EL MENU D E AYUDA DE C O C++ PUEDES ENCONTRAR ESTE ARCHIVO QUE SE LLAMA INIGRAPH LO PUEDES COPIAR Y PEGARLO DESPUES DEL MAIN Y ENSEGUIDA EDITAS LO QUE MUESTRAS EN EL FORO.
PERO ADEMAS TIENES QUE HABILITAR BGI ESTO LO PUEDES HACER CAMBIANDO DE DIRECTORIO.
ENTRAS AL MENU PRINCIPAL, UNA VEZ ECHO ESTO ENTRAS AL MENU DE ARCHIVO , CLICK SOBRE LA OPCION: DOS SHELL Y A CONTINUACION SALES DEL DIRECTORIO BIN Y EDITAS BGI Y CON ESTO SOLUCIONAS TU PROBLEMA
PERO ADEMAS TIENES QUE HABILITAR BGI ESTO LO PUEDES HACER CAMBIANDO DE DIRECTORIO.
ENTRAS AL MENU PRINCIPAL, UNA VEZ ECHO ESTO ENTRAS AL MENU DE ARCHIVO , CLICK SOBRE LA OPCION: DOS SHELL Y A CONTINUACION SALES DEL DIRECTORIO BIN Y EDITAS BGI Y CON ESTO SOLUCIONAS TU PROBLEMA
Estas intentado utilizar una aplicacion tipo dos sobre un SO que no lo soporta. XP no es compatible con DOS
YO TENGO EL PROBLEMA DE TENER UN PROGRAMA HECHO CON TURBO C 3.1 Y COMO UTILIZA EL EGAVGA.BIN ahora compilado en el exe que cuando quiero ejecutarlo desde un xp no funciona... si lo hace de un w98se
Creo que te falta el fichero EGAVGA.BGI en el directorio de ejecucion
Hola, no thas agregado el codigo que detecta si tieneshabilitado el modo grafico...
Tube este problema y consegui ayuda que me funciono sigan estos pasos y si no tienen ese compilador bajenselo
http://www.programacionenc.net/modules.php?name=faq&af_op=ShowDetail&id=47#47
http://www.programacionenc.net/modules.php?name=faq&af_op=ShowDetail&id=47#47
A parte te falta establecer el sistema grafico en tu programa, asi como detectar el driver necesario, todo esto dentro del programa, no es suficiente con incluir la libreia. Ej.:
#include <graphics.h>
#include <iostream.h>
int main(){
initgraph(....)
ellipse(3,3,3,3);
closegraph();
return 0;
}
#include <graphics.h>
#include <iostream.h>
int main(){
initgraph(....)
ellipse(3,3,3,3);
closegraph();
return 0;
}
Lo que pasa es que la pantalla no soporta en modo grafico en xp y tienes que darle clic derecho al mouse en la pantalla del c++ depues en la opcion targed expert y en ella cambiar a aplicacion luego en plataform a dos estandar y seleccionar el modo BGI y aceptar y listo podras correro todos los programas en modo grafico que quieras
Despues de mucho romperme el coco con el Turbo Deburger y otras yerbas he sacado una conclusion y una solucion a este problema.
El modo por defecto detectado por las BGI en una targeta VGA (Nesesaria para correr Windows en cualquier vercion de 32 bits) es 640x480 a 16 colores, este modo usa cambios de planos para acomodar los pixeles de la targeta, hasta aca todo bien...
Ahora, el BIOS emulado de la cosola de WinXP no entra vien en los modos chained de la VGA. Problema de siseño... jejejejeje
Ahora o solo de las BGI es el problema, cuando hago una iniciasion en assembler usando las interrupciones de la BIOS ni por puta madre entra en los modos unchained, tambien susede con las librerias GRX usando MingW, DJGPP, OpenWathcom y Wathcom.
Provando por ahi... me di cuenta que el modo 320x200 a 16 colores... QUE NO ES CHAINED se encendia vien. Asi que pense que los modos unchained podian funcionar vien.... Correcto.
Poniendo
int gd=VGA, gm=VGAMED;
initgrap(....y toda la bola
entramos en un modo de menor resolucion pero anda de perilla.
Por favor diganle a Bill que se dedique a otra cosa... como a alludarle a planchar la camisa a su amigo Bush en los devates jejejejeje....
Saludos a todos.
El modo por defecto detectado por las BGI en una targeta VGA (Nesesaria para correr Windows en cualquier vercion de 32 bits) es 640x480 a 16 colores, este modo usa cambios de planos para acomodar los pixeles de la targeta, hasta aca todo bien...
Ahora, el BIOS emulado de la cosola de WinXP no entra vien en los modos chained de la VGA. Problema de siseño... jejejejeje
Ahora o solo de las BGI es el problema, cuando hago una iniciasion en assembler usando las interrupciones de la BIOS ni por puta madre entra en los modos unchained, tambien susede con las librerias GRX usando MingW, DJGPP, OpenWathcom y Wathcom.
Provando por ahi... me di cuenta que el modo 320x200 a 16 colores... QUE NO ES CHAINED se encendia vien. Asi que pense que los modos unchained podian funcionar vien.... Correcto.
Poniendo
int gd=VGA, gm=VGAMED;
initgrap(....y toda la bola
entramos en un modo de menor resolucion pero anda de perilla.
Por favor diganle a Bill que se dedique a otra cosa... como a alludarle a planchar la camisa a su amigo Bush en los devates jejejejeje....
Saludos a todos.
Gracias Betosr !!!
Me has dado la SOLUCIÓN a mis problemas con gráficos.
Tengo win XP y borland C++ 5.0.
Mi problema era "BGI graphics not supported under windows", y ahora con tu ayuda he logrado habilitar el modo gráfico en mis programas. Como bien dice el mensaje de error, el problema era que windows efectivamente no soporta los modos gráficos BGI (y si dice que no lo soporta es porque no lo soporta), pero cambiando el tipo de salida a modo "dos" y habilitando el modo BGI... ya no hay problema (dos sà lo soporta).
No nos quebremos la cabeza trantando de hacer algo q windows no permite fácilmente.
En ocasiones, la solución más simple es lo que se necesita... si no lo creen asÃ, les deseo mucha suerte para mejorar el windows !!!
Saludos.
Mensaje de original:
Enviado por Betosr el dÃa 14 de octubre de 2004
Lo que pasa es que la pantalla no soporta en modo grafico en xp y tienes que darle clic derecho al mouse en la pantalla del c++ depues en la opcion targed expert y en ella cambiar a aplicacion luego en plataform a dos estandar y seleccionar el modo BGI y aceptar y listo podras correro todos los programas en modo grafico que quieras
Me has dado la SOLUCIÓN a mis problemas con gráficos.
Tengo win XP y borland C++ 5.0.
Mi problema era "BGI graphics not supported under windows", y ahora con tu ayuda he logrado habilitar el modo gráfico en mis programas. Como bien dice el mensaje de error, el problema era que windows efectivamente no soporta los modos gráficos BGI (y si dice que no lo soporta es porque no lo soporta), pero cambiando el tipo de salida a modo "dos" y habilitando el modo BGI... ya no hay problema (dos sà lo soporta).
No nos quebremos la cabeza trantando de hacer algo q windows no permite fácilmente.
En ocasiones, la solución más simple es lo que se necesita... si no lo creen asÃ, les deseo mucha suerte para mejorar el windows !!!
Saludos.
Mensaje de original:
Enviado por Betosr el dÃa 14 de octubre de 2004
Lo que pasa es que la pantalla no soporta en modo grafico en xp y tienes que darle clic derecho al mouse en la pantalla del c++ depues en la opcion targed expert y en ella cambiar a aplicacion luego en plataform a dos estandar y seleccionar el modo BGI y aceptar y listo podras correro todos los programas en modo grafico que quieras
El programa que estas compilando es en version Turbo C en modo DOS, por lo que para trabajarlo en C++(Bajo XP) es necesario crear un proyecto y definirle PlatForm que trabaje en modo DOS Standard y al lado derecho en Standard Libraries BGI
el problema en si no es el sistema operativo, si no que la cabecera graphics no es para aplicaciones de windows, tendrias que checar en tu compilador de c si puedes elegir que tu salida sea para dos; ka verdad es que yo también tengo el mismo problema pero mi compilador de c no tiene la opción de elegir la salida en msdos
Xfa me puede decir cuales son los pasos para activar modo grafico, gracias
Pero... estas con turbo c que version?... no sera que es solo para DOS.... estas trabajando con una GUI? YO TENGO un problema similar pero para linkear svga16.bgi como obj en el exe de un programa que queria cambiar de 640x480 a 800x600
La solución que dais para Turbo C está bien (options, linker, librarian...) Pero... ¿qué pasa con el Borland C++? ¿Alguien sabe como solucionar el problema de la BGI en ese programa?
Saludos al foro
José Luis.
Saludos al foro
José Luis.
hola, mi nombre es martin y te recomendaria que primero abrieras una ventna msdos y la maximizaras, puesto que xp te permite usar ciertas funciones de msdos si esta maximizado, despues escrivi el codigo como sigue
#include <iostream.h>
#include <graphics.h>
void main(void)
{
int placa, modo;
int error;
detectgraph(&placa, &modo);
initgraph(&placa, &modo,"");
error = graphresult();
if (error != grOk)
{
cout <<"hay un error al inicializar los graficos "<<endl<<grapherrormsg(error);
}
ellipse(3,3,3,3);
closegraph();
}
compila este codigo con el turbo c y tendria que funcar, otra cosa que podes hacer es que en la funcion detectgraph(,,,) serÃa en el ultimo parametro, pasarle la ruta al fichero bgi, acordate que en c o c++ las barras siempre son dobles o sea \ (alt + 92).
desde ya suerte, si no te funciono,escrivime a [email protected]
suerte viejo.
#include <iostream.h>
#include <graphics.h>
void main(void)
{
int placa, modo;
int error;
detectgraph(&placa, &modo);
initgraph(&placa, &modo,"");
error = graphresult();
if (error != grOk)
{
cout <<"hay un error al inicializar los graficos "<<endl<<grapherrormsg(error);
}
ellipse(3,3,3,3);
closegraph();
}
compila este codigo con el turbo c y tendria que funcar, otra cosa que podes hacer es que en la funcion detectgraph(,,,) serÃa en el ultimo parametro, pasarle la ruta al fichero bgi, acordate que en c o c++ las barras siempre son dobles o sea \ (alt + 92).
desde ya suerte, si no te funciono,escrivime a [email protected]
suerte viejo.
hola: mandame tu codigo hou jueves para que lo vea y te envia alguna solucion a tu correo.
mi direccion es [email protected]
si no puedo reducir tus dudas, de aperdida te las amplio..ok....
mi direccion es [email protected]
si no puedo reducir tus dudas, de aperdida te las amplio..ok....
Por lo q dices el error te da por q estas intentando utilizar el bgi con ventanas windows, estaras utilizando un compilador como dev c++ ,visual c++ o alguna version moderna de borland c++.Yo te recomienod q utilizes turbo c o una version antigua de borland c++. Ademas tienes q actibar las librerias graficas como han dicho antes e inicializar los graficos con initgraph(); poniendo en el ultimo parametro la direccion de donde se encuentra la carpeta del bgi. Si tienes alguna duda mira un tema q puse yo hace un par de semanas pidiendo ayuda
Hola mi nombre es Eder Matus soy de Matagalpa, Nicaragua, he leido muchos mensajes acerca de como utilizar las funciones graficas aqui les doy una ayuda para los que tengan el compilador Borland C++ 4.5, primeramente deben de copiar el codigo en el area donde se escribe codigo es decir File->New una vez que ya tienen copiado el codigo hacen click derecho sobre el area de codigo aparece un menu emergente seleccionar del menu la opcion TargetExpert a continuacion les aparece la ventana de opciones de TargetExpert donde se encuentran los tipos de targeta (Target Type) seleccionar la opcion dando un click en Application [.exe] despues elegir la plataforma (Platform) y escoger en el combo que aparece ahi la opcion DOS (Standard) y notaran que en la parte que dice librerias estandar (Standard Libraries ) aparece tres opciones entre ellas estan (Class Library , Runtime, BGI) aca podran notar que esta seleccionada las tres opciones, en caso que no lo esten seleccionarlas, este fue el paso para que soporte BGI utilizando el sistema operativo windows XP, ahora otra consideracion a tomar en cuenta, al momento de hacer un programa con funciones graficas en el lugar donde se guarda el programa se debe guardar tambien el archivo EGAVGA.BGI este archivo se debe de copiar, se encuentra en la siguiente direccion C:BC45BGI puedes probarlo de la siguiente manera, primera creas una carpeta le pones nombre que tu quieras, dentro de esa carpeta debes guardar el codigo fuente y hacer las modificaciones del area de trabajo antes mensionadas, tambien dentro de la carpeta debes guardar el archivo EGAVGA.BGI ya que este archivo lo busca el compilador al compilar y ejecutar tu codigo fuente, puedes probarlo con el siguiente codigo,,,,......Bueno les ayude a utilizar, ahora deseo si pueden conseguirme una version superior al Borland C++ de forma gratuita o me indican la direccion y yo lo bajare ok....a continuacion el codigo para que puedan probar las funciones graficas en Borland C++ en Windows XP.
/* Ejemplo de un rectangulo en Borland C++ 4.5 */
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
int main(void)
{
/* Deteccion del driver */
int gdriver = DETECT, gmode, errorcode;
int left, top, right, bottom;
/* inicializar el modo grafico y variables locales */
initgraph(&gdriver, &gmode, "");
/* leer resultados de inicializacion */
errorcode = graphresult();
if (errorcode != grOk) { /* an error occurred */
printf("Error grafico: %sn", grapherrormsg(errorcode));
printf("Presione una tecla para abortar:");
getch();
exit(1); /* terminar con el codigo de error */
}
left = getmaxx() / 2 - 50;
top = getmaxy() / 2 - 50;
right = getmaxx() / 2 + 50;
bottom = getmaxy() / 2 + 50;
/* dibujar un rectangulo */
rectangle(left,top,right,bottom);
/* limpiar */
getch();
closegraph();
return 0;
}
/* Ejemplo de un rectangulo en Borland C++ 4.5 */
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
int main(void)
{
/* Deteccion del driver */
int gdriver = DETECT, gmode, errorcode;
int left, top, right, bottom;
/* inicializar el modo grafico y variables locales */
initgraph(&gdriver, &gmode, "");
/* leer resultados de inicializacion */
errorcode = graphresult();
if (errorcode != grOk) { /* an error occurred */
printf("Error grafico: %sn", grapherrormsg(errorcode));
printf("Presione una tecla para abortar:");
getch();
exit(1); /* terminar con el codigo de error */
}
left = getmaxx() / 2 - 50;
top = getmaxy() / 2 - 50;
right = getmaxx() / 2 + 50;
bottom = getmaxy() / 2 + 50;
/* dibujar un rectangulo */
rectangle(left,top,right,bottom);
/* limpiar */
getch();
closegraph();
return 0;
}
te ase falta desir de donde va a jalar el BGI, dar de alta graficos y algunas declaraciones en ayuda en graficos ydespues elipses ahi te ayudara
tu compilador Brorland debe ser una version inferior al 3.1, por lo que este programa en modo grafico no te corre bajo windows y debes correrlo bajo DOS, graphics not supported under Windows significa la opcion modo grafico no esta soportada bajo windows, correla en DOS y veras, para quew te corra en DOS has lo siguiente:
1.ve a FILE y busca change dir....
2.escoje donde veas BORLAND y una linea que sigue hasta BIN,
3.ahi haz click en BORLAND y escoje BGI
3.acepta y luego ve a OPCION y escoje LINKER
4.activa la opcion grafics que esta en la esquina superior izquierda y acepta
5.compila el juego para ver si yha no hay errores y correlo, veras como te funciona
Christian Ocampo
1.ve a FILE y busca change dir....
2.escoje donde veas BORLAND y una linea que sigue hasta BIN,
3.ahi haz click en BORLAND y escoje BGI
3.acepta y luego ve a OPCION y escoje LINKER
4.activa la opcion grafics que esta en la esquina superior izquierda y acepta
5.compila el juego para ver si yha no hay errores y correlo, veras como te funciona
Christian Ocampo
Bueno, yo estoy usando Borland c/c++, y puedo abrir librerias graphicas y demas, pero lo que todavia no pude hacer, fue hacer aparecer en pantalla una imagen, ya sea bmp o jpg (la ultima vez que probe, hice que aparecieran algunos pocos pixeles coloreados ^_º), pero levantandola desde un archivo en disco. Me dijeron que primero tenia que setear la paleta para que trabaje a 256 colores, pero luego de intenter y probar otra vez, no pude levantar nada. Estoy seguro que me falta algo en mi codigo y lo mas probable es que me falten sentencias (las cuales desde ya no se me ocurren cuales pueden ser). Si me podrian decir aunque sea los pasos para hacerlo y si pudieran pegarle una chequeadita al codigo estare agradecido.
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<graphics.h>
void main()
{
int d,m,x,y;
FILE *p;
clrscr();
d=DETECT;
initgraph(&d,&m,"C:\tc3\bgi");
p=fopen("C:\xxx.bmp","rb");
for(x=0;x<640;x++)
for(y=0;y<480;y++)
{
putimage(x,y,p,0);
}
getch();
}
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<graphics.h>
void main()
{
int d,m,x,y;
FILE *p;
clrscr();
d=DETECT;
initgraph(&d,&m,"C:\tc3\bgi");
p=fopen("C:\xxx.bmp","rb");
for(x=0;x<640;x++)
for(y=0;y<480;y++)
{
putimage(x,y,p,0);
}
getch();
}
La opcion k da este compa es valida
Te vas a Opciones - > Linker -> ibraries -> y marcas con una X la opcion que dice Graphics Library
y ya solo, si te da pexes copiate el Egavga.bgi a tu carpeta bin y listo.
Saludos
Te vas a Opciones - > Linker -> ibraries -> y marcas con una X la opcion que dice Graphics Library
y ya solo, si te da pexes copiate el Egavga.bgi a tu carpeta bin y listo.
Saludos
El problema es que nose implemento bien las librerias del compilador que estas utilizando o l aresolucion de tu pantalla no soportan los pixeles
en el ambiente xp turbo c siempre tendra problemas por el tipo de sistema opertaivo ya que C es para ambiente msdos, una solucion es que arrancaras en simbolo del sistema sin entrara windows u otra hacer una particion en tu computadora con win98 para que no tengas problemas
BASICAMENTE LO QUE SUCEDE ES QUE XP NO PUEDE
MANEJAR BIEN ALGUNOS PROGRAMAS DE DOS
ESTO SE DEBE A QUE EL MODO GRAFICO (MODO 13)
SE CAMBIA MUY RAPIDAMENTE Y WINDOWS DA COMO
QUE ES UNA OPERACION NO VALIDA
YO TENGO WINDOWS98 Y PARA EJECUTAR PASO A PASO
PROGRAMAS EN TURBO C++ DE BORLAND TENGO QUE
USAR D.O.S PURO SI NO WINDOWS ME DETIENE LA OPERACION
HACE UNA COSA PROBA BAJAR LA RESOLUCION DE WINDOWS A 16 COLORES A VER QUE PASA
POR QUE GRAPHIC.H FUNCIONA EN ESA MODASLIDAD
Y EN 320x200 PIXELES
CONTAME SI TE ANDUBO BIEN LO QUE TE DIJE
MANEJAR BIEN ALGUNOS PROGRAMAS DE DOS
ESTO SE DEBE A QUE EL MODO GRAFICO (MODO 13)
SE CAMBIA MUY RAPIDAMENTE Y WINDOWS DA COMO
QUE ES UNA OPERACION NO VALIDA
YO TENGO WINDOWS98 Y PARA EJECUTAR PASO A PASO
PROGRAMAS EN TURBO C++ DE BORLAND TENGO QUE
USAR D.O.S PURO SI NO WINDOWS ME DETIENE LA OPERACION
HACE UNA COSA PROBA BAJAR LA RESOLUCION DE WINDOWS A 16 COLORES A VER QUE PASA
POR QUE GRAPHIC.H FUNCIONA EN ESA MODASLIDAD
Y EN 320x200 PIXELES
CONTAME SI TE ANDUBO BIEN LO QUE TE DIJE