Entradas

Dibujando con GDI (Parte 1/3)

Imagen
Finalmente, una vez que hemos ya introducido y explicado GDI ya podemos empezar a usarlo para realizar dibujos de primitivas basicas. Estableciendo pixeles Si necesitamos establecer un pixel en particular con un color en particular de nuestra area del cliente usamos la funcion SetPixel() , que tiene la sintaxis:   SetPixel(hdc, x, y, crColor); En donde: hdc es nuestro handle a device context x es la posicion x sobre el area del cliente y es la posicion y sobre el area del cliente crColor : es el color que queremos el cual se genera llamando a la macro RGB() la cual explicaremos en breve  La macro RGB() sirve para generar el color, el cual se genera a partir de 3 valores los cuales son rojo (R), verde (G) y azul (B). Esta macro tiene la sintaxis: RGB(rojo, verde, azul) en donde rojo, verde y azul son valores numericos enteros. Si necesitamos establecer un pixel en particular con un color en particular de nuestra area del cliente usamos la funcion GetPixel() , qu

Usarías C o C++ con la API de Windows?

Mas sobre GDI

En esta ocasion vamos a profundizar un poco mas en GDI, al explorar cual es su estructura, que basicamente podemos definir en 3 partes: Llamadas Primitivas Otros aspectos Desde la vision del programador GDI es una coleccion de muchas funciones y otros tantos tipos asociados como ser: Tipos de datos Macros Estructuras Se basa en la idea que se puede hacer que un sistema de librerias dinamicas contengan las rutinas necesarias para realizar las operaciones de dibujo, mientras que estas librerias se comunican con los diferentes tipos de hardware de las diferentes marcas que existen, siendo todo esto transparente al programador. O sea que nosotros llamamos a las funciones normalmente y para cada plataforma habrá una implementacion especifica adaptada para ese hardware especifico. Llamadas  Existen numerosas funciones en GDI que se pueden clasificar en los siguientes grupos: Funciones que obtienen (crean) o liberan (destruyen) un device context Funciones que obtienen infor

Introduccion a GDI (parte 2/2)

Imagen
Continuando con esta introduccion a GDI vamos a explicar brevemente mas sobre la estructura PAINTSTRUCT. Está definida como: typedef struct tagPAINTSTRUCT {        HDC hdc ;        BOOL fErase ;        RECT rcPaint ;        BOOL fRestore ;        BOOL fIncUpdate ;        BYTE rgbReserved[32] ; } PAINTSTRUCT ;  Windows se encarga de llenar cada uno de los campos cuando se hace una llamada a BeginPaint() . El programador puede usar directamente los primeros 3 campos mientras que los otros 3 restantes son de uso interno por parte de Windows. Notemos la existencia de un campo del tipo RECT , el cual es basicamente una estructura que contiene coordenadas expresadas como posiciones superior(top), inferior(bottom), izquierda(left) y derecha(right). Esta estructura RECT se usa para definir el rectangulo que se va a pintar que por lo general en BeginPaint() es toda el area del ciente.   Coordenadas en el area del cliente. Hemos hablado de que existe una estructura RECT que contien

Introduccion a GDI (Parte 1/2)

Imagen
En entradas pasadas hablamos de ciertos conceptos relacionados a cuales son las partes que componen una ventana: Esto sirve como introduccion para poder entendernos en el mundo de programar para obtener figuras graficas y para esto nos vamos a servir de GDI. Notese que el area donde mas vamos a trabajar y de mayor interes para nosotros es el area del cliente. Digamos que sería como nuestro "lienzo" sobre el cual vamos a dibujar y escribir. GDI provee multiples funciones para escribir texto y dibujar formas, asi como controlar los colores aplicados y mostrados. Sin embargo para poder dibujar sobre nuestra area del cliente, necesitamos por supesto un handle a ella, que la identifica inequivocamente para tener control y certeza de nuestras acciones. A este handle tambien se le conoce como HDC o handle to device context. HDC Esta es una estructura, interna y mantenida por Windows y esta asociada a una pantalla de video en particular en nuestro PC. Por lo general en