PDA

Ver la versión completa : Duda programación en C



josekona1
14/05/2014, 08:10
Buenos días a todos, acudo a vosotros para preguntaros sobre una duda de programación en C. No soy informático así que estoy pegaillo en el tema. Mirad me he leido varios manuales de C pero en ninguno viene nada acerca de cómo poder trabajar con entornos gráficos, me explico, no sé cómo hacer cosas "tan sencillas" como poder dibujar una línea en la pantalla y no encuentro ningún manual ni sé dónde buscar. Además no se qué biblioteca tengo que incluir en el programa. Me podríais echar una mano?. Me sabríais decir algún manual o tutorial donde pueda aprender sobre este tema. Muchas gracias a todos.[Ahhh]

Jurk
14/05/2014, 08:21
Mucho cacao pal Body, tio. Si es por hacer un videojuego, utiliza las librerias SDL. Si es para hacer un programita de ventanas, te recomendaria que pasases de c a c++ (o c#, o java... te recomiendo c++ por seguir con mas o menos lo mismo), aprendieses Programacion Orientada a Objetos y que te buscases la vida aprendiendo windows forms con tutoriales y demases por internet

josekona1
14/05/2014, 09:04
El problema es que he hecho un programa en C que me saca ficheros de texto con coordenadas de puntos y quiero coger esos puntos y dibujarlos en pantalla, pero claro, no se como hacerlo, me habían dicho por ahí que podría utilizar la libreria <conio> pero no tengo ni pajolera idea.

hardyx
14/05/2014, 09:31
La librerías conio es para consolas de texto y no creo que te sirva mucho. Para dibujar gráficos en C no hay órdenes en el lenguaje, tienes que usar una librería. Puedes usar SDL con el módulo SDL_gfx que tiene funciones de dibujo de geometrías, pero primero deberías mirarte tutoriales de SDL, que hay muchos. Si los puntos son en 3D, podrías usar también OpenGL, que también hay muchos tutoriales.

Aquí tienes un tutorial de SDL_gfx:
http://aaroncox.net/tutorials/2dtutorials/sdlshapes.html

Dibujando puntos en 3d con OpenGL:
http://opengl-esp.superforo.net/t25-tutorial-iii1-dibujar-figuras-los-puntos

También puedes hacerlo en PyGame, que es un lenguaje sencillo:
http://www.pygame.org/docs/ref/draw.html

GameMaster
14/05/2014, 09:33
Puedes usar las librerias MiniGUI por ejemplo, tiene funciones de pintado, puntos, lineas, eclipses, formas geometricas, etc.

#ifdef _ADV_2DAPI
/* Define grid stripple bitmap */
const unsigned char stipple_bits [] = "\x81\x42\x24\x18\x18\x24\x42\x81";
static STIPPLE my_stipple =
{
8, 8, 1, 8,
stipple_bits
};
/* Example code of advanced 2D GDI functions */
void GDIDemo_Adv2DAPI (HWND hWnd, HDC hdc)
{
POINT pt [10];
BITMAP bitmap;
/* Load a bitmap as brush tile bitmap */
if (LoadBitmap (hdc, &bitmap, "res/sample.bmp"))
return;
/* Set pen type, dash style and width */
SetPenType (hdc, PT_SOLID);
SetPenDashes (hdc, 0, "\1\1", 2);
SetPenWidth (hdc, 5);
/* Set the end point style of pen is “round end point” */
SetPenCapStyle (hdc, PT_CAP_ROUND);
/* Plot a line point */
LineEx (hdc, 10, 10, 50, 50);
/* Set pen jointing style as “bevel joining” */
SetPenJoinStyle (hdc, PT_JOIN_BEVEL);
/* Plot poly line segment */
pt [0].x = 20; pt [0].y = 20;
pt [1].x = 80; pt [1].y = 20;
pt [2].x = 80; pt [2].y = 80;
pt [3].x = 20; pt [3].y = 80;
pt [4].x = 20; pt [4].y = 20;
PolyLineEx (hdc, pt, 5);
/* Set pen width to be 20, pen color to be red, pen end point style to
/*be “round end point”
*/
SetPenWidth (hdc, 20);
SetPenColor (hdc, PIXEL_red);
SetPenCapStyle (hdc, PT_CAP_ROUND);
/* Plot a line segment */
LineEx (hdc, 80, 80, 400, 300);
/* Set pen color to be blue */
SetPenColor (hdc, PIXEL_blue);
/* Plot an arc across thid quadrant and forth quadrant */
ArcEx (hdc, 100, 100, 200, 300, 180*64, 180*64);
/* Set brush type as solid */
SetBrushType (hdc, BT_SOLID);
/* Set brush color as green */
SetBrushColor (hdc, PIXEL_green);
/* Fill arc from 0 degree to 120 degree */
FillArcEx (hdc, 100, 0, 200, 100, 0, 120*64);
/* Set brush type as tile */
SetBrushType (hdc, BT_TILED);

josekona1
14/05/2014, 12:34
Les echare un vistazo. Muchas gracias.

Drumpi
14/05/2014, 13:19
En mi facultad, lo que usaban para tal fin era allegro. Pero si vas en serio, SDL u OpenGL es por donde debes empezar.