Graficos En Visual C++
Ingeniería Mecánica g M
Gráficos en Visual C++
1
Para gráficos (incluyendo texto) en Visual C++ Windows utiliza la interfaz Graphics Device Interfaz l i t f G hi D i I t f (GDI) lo que llama a l l ll los gestores de dispositivo ya sea de video, impresora o trazadores de gráficos y establecidos. g ya
Se tiene a la interfaz GDI que provee de laaplicación y va al dispositivo
28/06/2011
Ing. Daniel Osorio Maldonado
2
Contexto de Dispositivo p
Windows no permite el acceso directo al hardware de visualización, lo hace utilizando un nivel de abstracción denominado contexto de dispositivo (DC). Un contexto de dispositivo (DC) es una estructura de datos, mantenida internamente por el GDI que contiene los atributos básicos para g pgraficar o p poner un texto.
Un ejemplo es el OnDraw en Visual C++. La ventanita que se aprecia fue confeccionada en un SDI ( g (Single document) )
28/06/2011
Ing. Daniel Osorio Maldonado
3
Atributos del Contexto de Dispositivo p
Cuando Windows crea un dispositivo asigna valores por omisión para todos los atributos. Para que una aplicación pueda obtener o modificar cualquierade estos atributos , la GDI proporciona las funciones que a continuación se detallan.
28/06/2011 Ing. Daniel Osorio Maldonado 4
ATRIBUTOS Modo de conversión Origen de Oi d ventana Tamaño lógico de la ventana lógica
POR OMISION MODIFICAR M_MTEXT (0,0) (0 0) (1,1) (1 1) SetMapMode SetWindowOrg S tWi d O OffSetWindowOrg SetWindowExt SetMapMode
OBTENER GetMapMode GetWindowOrg G tWi d OGetWindowExp
Origen de la (0,0) superficie de la p y proyección Tamaño de la superficie de proyección Pluma (1,1)
SetViewportOrg GetViewportOrg OffsetViewportOrg SetViewportExt SetMapMode SelecObject GetViewportExt
BLACK_PEN
SelecObject
28/06/2011
Ing. Daniel Osorio Maldonado
5
ATRIBUTOS Posición actual de la pluma Pincel Pi l
POR OMISION (0,0)
MODIFICAR
OBTENERMoveTo, LineTo, GetCurrentPosit ArcTO, PolylineTo ion SelecObject S l Obj t GetBrushOrg GetTextColor SelecObject SelecObject Get Co o GetBkColor GetBkMode
6
WHITE_BRUSH SelecObject WHITE BRUSH S l Obj t SetBrushOrg SetTextColor SelecObject SelecObject Set Co o SetBkColor SetBkMode
Origen del pincel (0 0) (0,0) Color de texto Fuente Mapa de bits Co o Color de fondo o do Modo de fondo28/06/2011
Negro SISTEM_FONT Ninguno Blanco a co OPAQUE
Ing. Daniel Osorio Maldonado
ATRIBUTOS
Modo de dibujo Modo de ajuste Modo de relleno
POR OMISION MODIFICAR R2_copypen
SetROP2 BLACKONWHITE SetStrechBltMode ALTERNATE SetPolyFillMode
OBTENER
GetROP2 GetStrechBltMode GetPolyFillMode
Con estas funciones básicas se puede graficar en pantalla de dispositivo así como enVisual C++
28/06/2011
Ing. Daniel Osorio Maldonado
7
Objetos GDI
La GDI de Windows emplea herramientas de dibujo, incluyendo plumas , pinceles tipos de letra, mapas bits, paleta de color y regiones, que se contempla en MFC. //DIBUJA Y RELLENA UNA ELIPSE DE COLOR AMARILLO CElipseView::OnPaint() { static DWORD dwColor[9]={RGB(0,0,0),RGB(255,0,0), RGB(0,255,0),RGB(0,0,255),RGB(255,255,0),RGB(255,0,255), RGB(0,255,255),RGB(128,128,128), ( ) ( ) ( ) ( ) RGB(255,255,255)}; POINT polylpts[4], polygpts[5]; int xcoord; CBrush n_brocha; n brocha; CBrush *v_brocha; CPen n_pincel; CPen *v pincel; v_pincel; n_pincel.CreatePen(PS_SOLID, 2,dwColor[3]); //n_pincel.CreatePen(PS_SOLID, ancho de la línea de borde, dwColor [color de la línea de borde]); v_pincel=dc.SelectObject(&n_pincel); i l dS l tObj t(& i l) n_brocha.CreateSolidBrush(dwColor[4]); //n_brocha.CreateSolidBrush(dwColor[color del relleno])
28/06/2011
Ing. Daniel Osorio Maldonado
8
v_brocha=dc.SelectObject(&n_brocha); dc.Ellipse(475,400,100,150);//los dos primeros dan las dimensiones de la elipse //superior ,los otros 2 dan la ubicación de los puntos uno de la parte derecha //el otro de la parte izquierda...
Regístrate para leer el documento completo.