Operaciones en objetos gráficos
Una vez que una aplicación crea un controlador de dominio de pantalla o impresora, puede empezar a dibujar en el dispositivo asociado o, en el caso del controlador de dominio de memoria, puede empezar a dibujar en el mapa de bits almacenado en la memoria. Sin embargo, antes de comenzar el dibujo y, a veces, mientras el dibujo está en curso, a menudo es necesario reemplazar los objetos predeterminados por nuevos objetos.
Una aplicación puede examinar los atributos de un objeto predeterminado llamando a las funciones GetCurrentObject y GetObject . La función GetCurrentObject devuelve un identificador que identifica el lápiz actual, el pincel, la paleta, el mapa de bits o la fuente, y la función GetObject inicializa una estructura que contiene los atributos de ese objeto.
Algunas impresoras proporcionan lápices residentes, pinceles y fuentes que se pueden usar para mejorar la velocidad de dibujo en una aplicación. Se pueden usar dos funciones para enumerar estos objetos: EnumObjects y EnumFontFamilies. Si la aplicación debe enumerar los lápices o pinceles residentes, puede llamar a la función EnumObjects para examinar los atributos correspondientes. Si la aplicación debe enumerar fuentes residentes, puede llamar a la función EnumFontFamilies (que también puede enumerar fuentes GDI).
Una vez que una aplicación determina que un objeto predeterminado necesita reemplazarlo, crea un nuevo objeto llamando a una de las siguientes funciones de creación.
Graphic (objeto) | Función |
---|---|
Bitmap | CreateBitmap, CreateBitmapIndirect, CreateCompatibleBitmap, CreateDiscardableBitmap, CreateDIBitmap |
Pincel | CreateBrushIndirect, CreateDIBPatternBrush, CreateDIBPatternBrushPt, CreateHatchBrush, CreatePatternBrush, CreateSolidBrush |
Paleta de colores | CreatePalette |
Fuente | CreateFont, CreateFontIndirect |
Lápiz | CreatePen, CreatePenIndirect, ExtCreatePen |
Region | CreateEllipticRgn, CreateEllipticRgnIndirect, CreatePolygonRgn, CreatePolyPolygonRgn, CreateRectRgn, CreateRectRgnIndirect, CreateRoundRectRgn |
Cada una de estas funciones devuelve un identificador que identifica un nuevo objeto. Una vez que una aplicación recupera un identificador, debe llamar a la función SelectObject para reemplazar el objeto predeterminado. Sin embargo, la aplicación debe guardar el identificador que identifica el objeto predeterminado y usar este identificador para reemplazar el nuevo objeto cuando ya no sea necesario. Cuando la aplicación termine de dibujar con el nuevo objeto, debe restaurar el objeto predeterminado llamando a la función SelectObject y, a continuación, eliminar el nuevo objeto llamando a la función DeleteObject . Si no se eliminan objetos, se producen problemas graves de rendimiento.