Clase CDC
Define una clase de objetos en el contexto del dispositivo.
Sintaxis
class CDC : public CObject
Miembros
Constructores públicos
Nombre | Descripción |
---|---|
CDC::CDC |
Construye un objeto CDC . |
Métodos públicos
Nombre | Descripción |
---|---|
CDC::AbortDoc |
Finaliza el trabajo de impresión actual y borra todo lo que la aplicación ha escrito en el dispositivo desde la última llamada de la función miembro StartDoc . |
CDC::AbortPath |
Cierra y descarta los trazados del contexto de dispositivo. |
CDC::AddMetaFileComment |
Copia el comentario de un búfer en un metarchivo especificado de formato mejorado. |
CDC::AlphaBlend |
Muestra mapas de bits que tienen píxeles transparentes o semitransparentes. |
CDC::AngleArc |
Dibuja un segmento de línea y un arco, y mueve la posición actual al punto final del arco. |
CDC::Arc |
Dibuja un arco elíptico. |
CDC::ArcTo |
Dibuja un arco elíptico. Esta función es similar a Arc , salvo que se actualiza la posición actual. |
CDC::Attach |
Asocia un contexto de dispositivo Windows a este objeto CDC . |
CDC::BeginPath |
Abre un corchete de trazado en el contexto de dispositivo. |
CDC::BitBlt |
Copia un mapa de bits desde un contexto de dispositivo especificado. |
CDC::Chord |
Dibuja una cuerda (una figura cerrada delimitada por la intersección de una elipse y un segmento de línea). |
CDC::CloseFigure |
Cierra una figura abierta en un trazado. |
CDC::CreateCompatibleDC |
Crea un contexto de dispositivo de memoria que es compatible con otro contexto de dispositivo. Puede usarlo para preparar imágenes en la memoria. |
CDC::CreateDC |
Crea un contexto de dispositivo para un dispositivo específico. |
CDC::CreateIC |
Crea un contexto de información para un dispositivo específico. Esto proporciona una manera rápida de obtener información sobre el dispositivo sin necesidad de crear un contexto de dispositivo. |
CDC::DeleteDC |
Elimina el contexto de dispositivo Windows asociado a este objeto CDC . |
CDC::DeleteTempMap |
Llamado por el controlador de tiempo de inactividad de CWinApp para eliminar cualquier objeto temporal CDC creado por FromHandle . También desasocia el contexto de dispositivo. |
CDC::Detach |
Desasocia el contexto de dispositivo Windows de este objeto CDC . |
CDC::DPtoHIMETRIC |
Convierte las unidades de dispositivo en unidades HIMETRIC . |
CDC::DPtoLP |
Convierte las unidades de dispositivo en unidades lógicas. |
CDC::Draw3dRect |
Dibuja un rectángulo tridimensional. |
CDC::DrawDragRect |
Borra y vuelve a dibujar un rectángulo mientras se arrastra. |
CDC::DrawEdge |
Dibuja los bordes de un rectángulo. |
CDC::DrawEscape |
Accede a las funcionalidades de dibujo de una pantalla de vídeo que no están disponibles directamente a través de la interfaz de dispositivo gráfico (GDI). |
CDC::DrawFocusRect |
Dibuja un rectángulo con el estilo usado para indicar el foco. |
CDC::DrawFrameControl |
Dibuja un control de marco. |
CDC::DrawIcon |
Dibuja un icono. |
CDC::DrawState |
Muestra una imagen y aplica un efecto visual para indicar un estado. |
CDC::DrawText |
Dibuja texto con formato en el rectángulo especificado. |
CDC::DrawTextEx |
Dibuja texto con formato en el rectángulo especificado con otros formatos. |
CDC::Ellipse |
Dibuja una elipse. |
CDC::EndDoc |
Finaliza un trabajo de impresión iniciado por la función miembro StartDoc . |
CDC::EndPage |
Informa al controlador de dispositivo de que finaliza una página. |
CDC::EndPath |
Cierra un corchete de trazado y selecciona el trazado definido por el corchete en el contexto de dispositivo. |
CDC::EnumObjects |
Enumera los lápices y pinceles disponibles en un contexto de dispositivo. |
CDC::Escape |
Permite que las aplicaciones accedan a las instalaciones que no están directamente disponibles desde un dispositivo determinado a través de GDI. También permite el acceso a las funciones de escape de Windows. Las llamadas de escape que realiza una aplicación se traducen y envían al controlador del dispositivo. |
CDC::ExcludeClipRect |
Crea una zona de recorte que consta de la zona de recorte existente menos el rectángulo especificado. |
CDC::ExcludeUpdateRgn |
Impide dibujar dentro de áreas no válidas de una ventana al excluir de la zona de recorte una región actualizada de la ventana. |
CDC::ExtFloodFill |
Rellena un área con el pincel actual. Proporciona más flexibilidad que la función miembro CDC::FloodFill . |
CDC::ExtTextOut |
Escribe una cadena de caracteres dentro de una región rectangular mediante la fuente seleccionada actualmente. |
CDC::FillPath |
Cierra cualquier figura abierta del trazado actual y rellena el interior del trazado mediante el pincel actual y el modo de relleno de polígonos. |
CDC::FillRect |
Rellena un rectángulo determinado mediante un pincel específico. |
CDC::FillRgn |
Rellena una región específica con el pincel especificado. |
CDC::FillSolidRect |
Rellena un rectángulo con un color sólido. |
CDC::FlattenPath |
Transforma las curvas del trazado seleccionado en el contexto de dispositivo actual y convierte cada curva en una secuencia de líneas. |
CDC::FloodFill |
Rellena un área con el pincel actual. |
CDC::FrameRect |
Dibuja un borde alrededor de un rectángulo. |
CDC::FrameRgn |
Dibuja un borde alrededor de una región específica mediante un pincel. |
CDC::FromHandle |
Devuelve un puntero a un objeto CDC cuando se especifica un identificador de un contexto de dispositivo. Si un objeto CDC no está asociado al identificador, se creará y asociará un objeto CDC temporal. |
CDC::GetArcDirection |
Devuelve la dirección del arco actual para el contexto de dispositivo. |
CDC::GetAspectRatioFilter |
Recupera la configuración del filtro de relación de aspecto actual. |
CDC::GetBkColor |
Recupera el color de fondo actual. |
CDC::GetBkMode |
Recupera el modo de fondo. |
CDC::GetBoundsRect |
Devuelve el rectángulo delimitador acumulado actual para el contexto de dispositivo especificado. |
CDC::GetBrushOrg |
Recupera el origen del pincel actual. |
CDC::GetCharABCWidths |
Recupera los anchos, en unidades lógicas, de caracteres consecutivos en un intervalo determinado de la fuente actual. |
CDC::GetCharABCWidthsI |
Recupera los anchos, en unidades lógicas, de índices de glifo consecutivos en un intervalo especificado de la fuente TrueType actual. |
CDC::GetCharacterPlacement |
Recupera varios tipos de información sobre una cadena de caracteres. |
CDC::GetCharWidth |
Recupera los anchos fraccionarios de caracteres consecutivos en un intervalo determinado de la fuente actual. |
CDC::GetCharWidthI |
Recupera los anchos, en coordenadas lógicas, de índices de glifo consecutivos en un intervalo especificado de la fuente actual. |
CDC::GetClipBox |
Recupera las dimensiones del rectángulo delimitador más estrecho alrededor del límite de recorte actual. |
CDC::GetColorAdjustment |
Recupera los valores de ajuste de color para el contexto de dispositivo. |
CDC::GetCurrentBitmap |
Devuelve un puntero al objeto CBitmap seleccionado actualmente. |
CDC::GetCurrentBrush |
Devuelve un puntero al objeto CBrush seleccionado actualmente. |
CDC::GetCurrentFont |
Devuelve un puntero al objeto CFont seleccionado actualmente. |
CDC::GetCurrentPalette |
Devuelve un puntero al objeto CPalette seleccionado actualmente. |
CDC::GetCurrentPen |
Devuelve un puntero al objeto CPen seleccionado actualmente. |
CDC::GetCurrentPosition |
Recupera la posición actual del lápiz (en coordenadas lógicas). |
CDC::GetDCBrushColor |
Recupera el color de pincel actual. |
CDC::GetDCPenColor |
Recupera el color del lápiz actual. |
CDC::GetDeviceCaps |
Recupera un tipo especificado de información concreta del dispositivo sobre las funcionalidades de un dispositivo de visualización determinado. |
CDC::GetFontData |
Recupera información de métricas de fuente de un archivo de fuente escalable. Para identificar qué información se va a recuperar, se especifica un desplazamiento en el archivo de fuente y la longitud de la información que se devolverá. |
CDC::GetFontLanguageInfo |
Devuelve información sobre la fuente seleccionada actualmente para el contexto de visualización especificado. |
CDC::GetGlyphOutline |
Recupera la curva de contorno o el mapa de bits de un carácter de contorno en la fuente actual. |
CDC::GetGraphicsMode |
Recupera el modo gráfico actual para el contexto de dispositivo especificado. |
CDC::GetHalftoneBrush |
Recupera un pincel de semitonos. |
CDC::GetKerningPairs |
Recupera los pares de interletraje de caracteres para la fuente seleccionada actualmente en el contexto de dispositivo especificado. |
CDC::GetLayout |
Recupera el diseño de un contexto de dispositivo (DC). El diseño puede ser de izquierda a derecha (valor predeterminado) o de derecha a izquierda (reflejado). |
CDC::GetMapMode |
Recupera el modo de asignación actual. |
CDC::GetMiterLimit |
Devuelve el límite angular para el contexto de dispositivo. |
CDC::GetNearestColor |
Recupera el color lógico más cercano a un color lógico especificado que el dispositivo determinado puede representar. |
CDC::GetOutlineTextMetrics |
Recupera información de métricas de fuente para fuentes TrueType. |
CDC::GetOutputCharWidth |
Recupera los anchos de caracteres individuales de un grupo consecutivo de caracteres de la fuente actual mediante el contexto de dispositivo de salida. |
CDC::GetOutputTabbedTextExtent |
Calcula el ancho y el alto de una cadena de caracteres en el contexto de dispositivo de salida. |
CDC::GetOutputTextExtent |
Calcula el ancho y el alto de una línea de texto en el contexto de dispositivo de salida mediante la fuente actual para determinar las dimensiones. |
CDC::GetOutputTextMetrics |
Recupera las métricas de la fuente actual del contexto de dispositivo de salida. |
CDC::GetPath |
Recupera las coordenadas que definen los extremos de líneas y los puntos de control de curvas que se encuentran en el trazado seleccionado en el contexto de dispositivo. |
CDC::GetPixel |
Recupera el valor de color RGB del píxel en el punto especificado. |
CDC::GetPolyFillMode |
Recupera el modo actual de relleno de polígonos. |
CDC::GetROP2 |
Recupera el modo de dibujo actual. |
CDC::GetSafeHdc |
Devuelve CDC::m_hDC , el contexto de dispositivo de salida. |
CDC::GetStretchBltMode |
Recupera el modo de extensión del mapa de bits actual. |
CDC::GetTabbedTextExtent |
Calcula el ancho y el alto de una cadena de caracteres en el contexto de dispositivo de atributo. |
CDC::GetTextAlign |
Recupera las marcas de alineación de texto. |
CDC::GetTextCharacterExtra |
Recupera la configuración actual de la cantidad de espaciado entre caracteres. |
CDC::GetTextColor |
Recupera el color actual del texto. |
CDC::GetTextExtent |
Calcula el ancho y el alto de una línea de texto en el contexto de dispositivo de atributo mediante la fuente actual para determinar las dimensiones. |
CDC::GetTextExtentExPointI |
Recupera el número de caracteres de una cadena especificada que cabrá en un espacio determinado y rellena una matriz con la extensión de texto para cada uno de esos caracteres. |
CDC::GetTextExtentPointI |
Recupera el ancho y el alto de la matriz especificada de índices de glifo. |
CDC::GetTextFace |
Copia el nombre del tipo de letra de la fuente actual en un búfer como una cadena terminada en null. |
CDC::GetTextMetrics |
Recupera las métricas de la fuente actual del contexto de dispositivo de atributo. |
CDC::GetViewportExt |
Recupera las extensiones x e y del área de visualización. |
CDC::GetViewportOrg |
Recupera las coordenadas x e y del origen del área de visualización. |
CDC::GetWindow |
Devuelve la ventana asociada al contexto de dispositivo de visualización. |
CDC::GetWindowExt |
Recupera las extensiones x e y de la ventana asociada. |
CDC::GetWindowOrg |
Recupera las coordenadas x e y del origen de la ventana asociada. |
CDC::GetWorldTransform |
Recupera la transformación actual del espacio global al espacio de página. |
CDC::GradientFill |
Rellena las estructuras de rectángulo y triángulo con un color que se degrada. |
CDC::GrayString |
Dibuja texto atenuado en la ubicación especificada. |
CDC::HIMETRICtoDP |
Convierte las unidades HIMETRIC en unidades de dispositivo. |
CDC::HIMETRICtoLP |
Convierte las unidades HIMETRIC en unidades lógicas. |
CDC::IntersectClipRect |
Crea una zona de recorte al formar la intersección de la región actual y un rectángulo. |
CDC::InvertRect |
Invierte el contenido de un rectángulo. |
CDC::InvertRgn |
Invierte los colores de una región. |
CDC::IsPrinting |
Determina si el contexto de dispositivo se usa para imprimir. |
CDC::LineTo |
Dibuja una línea desde la posición actual hasta un punto (no incluido). |
CDC::LPtoDP |
Convierte las unidades lógicas en unidades de dispositivo. |
CDC::LPtoHIMETRIC |
Convierte las unidades lógicas en unidades HIMETRIC. |
CDC::MaskBlt |
Combina los datos de color de los mapas de bits de origen y destino mediante la operación de máscara y trama especificadas. |
CDC::ModifyWorldTransform |
Cambia la transformación global de un contexto de dispositivo mediante el modo especificado. |
CDC::MoveTo |
Mueve la posición actual. |
CDC::OffsetClipRgn |
Mueve la zona de recorte del dispositivo especificado. |
CDC::OffsetViewportOrg |
Modifica el origen del área de visualización en relación con las coordenadas del origen del área de visualización actual. |
CDC::OffsetWindowOrg |
Modifica el origen de la ventana en relación con las coordenadas del origen de la ventana actual. |
CDC::PaintRgn |
Rellena una región con el pincel seleccionado. |
CDC::PatBlt |
Crea un patrón de bits. |
CDC::Pie |
Dibuja una cuña con forma circular. |
CDC::PlayMetaFile |
Reproduce el contenido del metarchivo especificado en el dispositivo determinado. La versión mejorada de PlayMetaFile muestra la imagen almacenada en el metarchivo de formato mejorado. El metarchivo se puede reproducir cualquier número de veces. |
CDC::PlgBlt |
Realiza una transferencia de bloques de bits de los bits de datos de color desde el rectángulo especificado en el contexto de dispositivo de origen hasta el paralelogramo especificado en el contexto de dispositivo determinado. |
CDC::PolyBezier |
Dibuja una o varias B-splines. La posición actual no se usa ni actualiza. |
CDC::PolyBezierTo |
Dibuja una o varias B-splines y mueve la posición actual al punto final de la última B-spline. |
CDC::PolyDraw |
Dibuja un conjunto de segmentos de línea y B-splines. Esta función actualiza la posición actual. |
CDC::Polygon |
Dibuja un polígono que consta de dos o más puntos (vértices) conectados por líneas. |
CDC::Polyline |
Dibuja un conjunto de segmentos de línea que conectan los puntos especificados. |
CDC::PolylineTo |
Dibuja una o varias líneas rectas y mueve la posición actual al punto final de la última línea. |
CDC::PolyPolygon |
Crea dos o más polígonos que se rellenan mediante el modo de relleno de polígono actual. Los polígonos pueden estar separados o superponerse. |
CDC::PolyPolyline |
Dibuja varias series de segmentos de línea conectados. Esta función no usa ni actualiza la posición actual. |
CDC::PtVisible |
Especifica si el punto determinado está dentro de la zona de recorte. |
CDC::RealizePalette |
Asigna entradas de la paleta lógica actual a la paleta del sistema. |
CDC::Rectangle |
Dibuja un rectángulo con el lápiz actual y lo rellena con el pincel actual. |
CDC::RectVisible |
Determina si alguna parte del rectángulo especificado se encuentra dentro de la zona de recorte. |
CDC::ReleaseAttribDC |
Libera m_hAttribDC , el contexto de dispositivo de atributo. |
CDC::ReleaseOutputDC |
Libera m_hDC , el contexto de dispositivo de salida. |
CDC::ResetDC |
Actualiza el contexto de dispositivo de m_hAttribDC . |
CDC::RestoreDC |
Restaura el contexto de dispositivo a un estado anterior guardado con SaveDC . |
CDC::RoundRect |
Dibuja un rectángulo con las esquinas redondeadas con el lápiz actual y rellenado con el pincel actual. |
CDC::SaveDC |
Guarda el estado actual del contexto de dispositivo. |
CDC::ScaleViewportExt |
Modifica la extensión del área de visualización en relación con los valores actuales. |
CDC::ScaleWindowExt |
Modifica las extensiones de la ventana en relación con los valores actuales. |
CDC::ScrollDC |
Desplaza un rectángulo de bits horizontal y verticalmente. |
CDC::SelectClipPath |
Selecciona el trazado actual como zona de recorte para el contexto de dispositivo, y combina la nueva región con cualquier zona de recorte existente mediante el modo especificado. |
CDC::SelectClipRgn |
Combina la región especificada con la zona de recorte actual mediante el modo especificado. |
CDC::SelectObject |
Selecciona un objeto de dibujo GDI, como un lápiz. |
CDC::SelectPalette |
Selecciona la paleta lógica. |
CDC::SelectStockObject |
Selecciona uno de los lápices, pinceles o fuentes predefinidos que proporciona Windows. |
CDC::SetAbortProc |
Establece una función de devolución de llamada proporcionada por el programador a la que Windows llama si se debe anular un trabajo de impresión. |
CDC::SetArcDirection |
Establece la dirección de dibujo que se va a usar para las funciones de arco y rectángulo. |
CDC::SetAttribDC |
Establece m_hAttribDC , el contexto de dispositivo de atributo. |
CDC::SetBkColor |
Establece el color de fondo actual. |
CDC::SetBkMode |
Establece el modo de fondo. |
CDC::SetBoundsRect |
Controla la acumulación de información del rectángulo delimitador para el contexto de dispositivo especificado. |
CDC::SetBrushOrg |
Especifica el origen del siguiente pincel seleccionado en un contexto de dispositivo. |
CDC::SetColorAdjustment |
Establece los valores de ajuste de color para el contexto de dispositivo mediante los valores especificados. |
CDC::SetDCBrushColor |
Establece el color del pincel actual. |
CDC::SetDCPenColor |
Establece el color del lápiz actual. |
CDC::SetGraphicsMode |
Establece el modo gráfico actual para el contexto de dispositivo especificado. |
CDC::SetLayout |
Cambia el diseño de un contexto de dispositivo (DC). |
CDC::SetMapMode |
Establece el modo de asignación actual. |
CDC::SetMapperFlags |
Modifica el algoritmo que el asignador de fuentes usa cuando asigna fuentes lógicas a fuentes físicas. |
CDC::SetMiterLimit |
Establece el límite de la longitud de las uniones angulares para el contexto de dispositivo. |
CDC::SetOutputDC |
Establece m_hDC , el contexto de dispositivo de salida. |
CDC::SetPixel |
Establece el píxel del punto especificado en la aproximación más cercana al color especificado. |
CDC::SetPixelV |
Establece el píxel de las coordenadas especificadas en la aproximación más cercana al color especificado. SetPixelV es más rápido que SetPixel porque no es necesario devolver el valor de color del punto pintado. |
CDC::SetPolyFillMode |
Establece el modo de relleno de polígono. |
CDC::SetROP2 |
Establece el modo de dibujo actual. |
CDC::SetStretchBltMode |
Establece el modo de extensión de mapa de bits. |
CDC::SetTextAlign |
Establece las marcas de alineación de texto. |
CDC::SetTextCharacterExtra |
Establece la cantidad de espaciado entre caracteres. |
CDC::SetTextColor |
Establece el color del texto. |
CDC::SetTextJustification |
Agrega espacio a los caracteres de salto de una cadena. |
CDC::SetViewportExt |
Establece las extensiones x e y del área de visualización. |
CDC::SetViewportOrg |
Establece el origen del área de visualización. |
CDC::SetWindowExt |
Establece las extensiones x e y de la ventana asociada. |
CDC::SetWindowOrg |
Establece el origen de la ventana del contexto de dispositivo. |
CDC::SetWorldTransform |
Establece la transformación actual del espacio global al espacio de página. |
CDC::StartDoc |
Informa al controlador de dispositivo de que se está iniciando un nuevo trabajo de impresión. |
CDC::StartPage |
Informa al controlador de dispositivo de que se está iniciando una página nueva. |
CDC::StretchBlt |
Mueve un mapa de bits desde un rectángulo y dispositivo de origen hasta un rectángulo de destino, para lo que se extiende o se comprime el mapa de bits si es necesario para que se ajuste a las dimensiones del rectángulo de destino. |
CDC::StrokeAndFillPath |
Cierra cualquier figura abierta de un trazado, traza el contorno del trazado con el lápiz actual y rellena su interior con el pincel actual. |
CDC::StrokePath |
Representa el trazado especificado con el lápiz actual. |
CDC::TabbedTextOut |
Escribe una cadena de caracteres en una ubicación especificada, para lo que expande las tabulaciones a los valores especificados en una matriz de posiciones de tabulación. |
CDC::TextOut |
Escribe una cadena de caracteres en una ubicación especificada con la fuente seleccionada actualmente. |
CDC::TransparentBlt |
Transfiere un bloque de bits de datos de color desde el contexto de dispositivo de origen especificado hasta un contexto de dispositivo de destino, y hace transparente un color especificado en la transferencia. |
CDC::UpdateColors |
Actualiza el área cliente del contexto de dispositivo, para lo que hace coincidir los colores actuales del área cliente con la paleta del sistema píxel a píxel. |
CDC::WidenPath |
Redefine el trazado actual como el área que se pintaría si dicho trazado se trazase con el lápiz seleccionado actualmente en el contexto de dispositivo. |
Operadores públicos
Nombre | Descripción |
---|---|
CDC::operator HDC |
Recupera el identificador del contexto de dispositivo. |
Miembros de datos públicos
Nombre | Descripción |
---|---|
CDC::m_hAttribDC |
Contexto de dispositivo de atributo usado por este objeto CDC . |
CDC::m_hDC |
Contexto de dispositivo de salida usado por este objeto CDC . |
Comentarios
El CDC
objeto proporciona funciones miembro para trabajar con un contexto de dispositivo, como una pantalla o impresora, y los miembros para trabajar con un contexto de visualización asociado al área cliente de una ventana.
Realice todo el dibujo mediante las funciones miembro de un objeto CDC
. La clase proporciona funciones miembro para las operaciones de contexto de dispositivo, el trabajo con herramientas de dibujo, la selección de objetos de interfaz de dispositivo gráfico (GDI) con seguridad de tipos y el trabajo con colores y paletas. También proporciona funciones miembro para obtener y establecer atributos de dibujo, realizar asignaciones, trabajar con el área de visualización, trabajar con la extensión de la ventana, convertir coordenadas, trabajar con regiones, recortar, dibujar líneas, y dibujar formas simples, elipses y polígonos. También se proporcionan funciones miembro para dibujar texto, trabajar con fuentes, usar escapes de impresora, desplazarse y reproducir metarchivos.
Para usar un objeto CDC
, constrúyalo y llame a sus funciones miembro que ejecutan en paralelo funciones de Windows que usan contextos de dispositivo.
Nota:
En Windows 95/98, todas las coordenadas de pantalla están limitadas a 16 bits. Por lo tanto, un objeto int
pasado a una función miembro CDC
debe estar en el intervalo de -32768 a 32767.
La biblioteca MCF (Microsoft Foundation Class) proporciona varias clases derivadas de CDC
para usos específicos. CPaintDC
encapsula las llamadas a BeginPaint
y EndPaint
. CClientDC
administra un contexto de visualización asociado al área cliente de una ventana. CWindowDC
administra un contexto de visualización asociado a una ventana completa, incluidos su marco y controles. CMetaFileDC
asocia un contexto de dispositivo a un metarchivo.
CDC
proporciona dos funciones miembro y GetLayout
SetLayout
, para revertir el diseño de un contexto de dispositivo, que no hereda su diseño de una ventana. Esta orientación de derecha a izquierda es necesaria para las aplicaciones escritas para las referencias culturales, como árabe o hebreo, donde el diseño de caracteres no es el estándar europeo.
CDC
contiene dos contextos de dispositivo, m_hDC
y m_hAttribDC
, que, cuando se crea un objeto CDC
, hacen referencia al mismo dispositivo. CDC
dirige todas las llamadas de GDI de salida a m_hDC
y la mayoría de las llamadas de GDI de atributo a m_hAttribDC
. (Un ejemplo de una llamada de atributo es GetTextColor
, mientras que SetTextColor
es una llamada de salida).
Por ejemplo, el marco usa estos dos contextos de dispositivo para implementar un objeto CMetaFileDC
que enviará la salida a un metarchivo mientras lee los atributos de un dispositivo físico. La vista previa de impresión se implementa en el marco de forma similar. También puede usar los dos contextos de dispositivo de forma similar en el código específico de la aplicación.
A veces podría necesitar información de métricas de texto de los contextos de dispositivo m_hDC
y m_hAttribDC
. Los siguientes pares de funciones proporcionan esta funcionalidad:
Usa m_hAttribDC | Usa m_hDC |
---|---|
GetTextExtent |
GetOutputTextExtent |
GetTabbedTextExtent |
GetOutputTabbedTextExtent |
GetTextMetrics |
GetOutputTextMetrics |
GetCharWidth |
GetOutputCharWidth |
Para obtener más información sobre CDC
, consulte Contextos de dispositivo.
Jerarquía de herencia
CDC
Requisitos
Encabezado: afxwin.h
CDC::AbortDoc
Finaliza el trabajo de impresión actual y borra todo lo que la aplicación ha escrito en el dispositivo desde la última llamada a la función miembro StartDoc
.
int AbortDoc();
Valor devuelto
Un valor mayor o igual que 0 si se realiza correctamente, o un valor negativo si se ha producido un error. En la lista siguiente se muestran los valores de error comunes y sus significados:
SP_ERROR
: error general.SP_OUTOFDISK
: no hay suficiente espacio en disco disponible actualmente para la cola y no habrá más espacio disponible.SP_OUTOFMEMORY
: no hay suficiente memoria disponible para la cola.SP_USERABORT
: el usuario finalizó el trabajo con el Administrador de impresión.
Comentarios
Esta función miembro reemplaza el escape de impresora ABORTDOC
.
Debe usarse AbortDoc
para finalizar lo siguiente:
Operaciones de impresión que no especifican una función abort mediante
SetAbortProc
.Operaciones de impresión que aún no han alcanzado su primera llamada de escape
NEWFRAME
oNEXTBAND
.
Si una aplicación encuentra un error de impresión o una operación de impresión cancelada, no debe intentar finalizar la operación mediante las funciones miembro EndDoc
o AbortDoc
de la clase CDC
. GDI finaliza automáticamente la operación antes de devolver el valor de error.
Si la aplicación muestra un cuadro de diálogo para permitir al usuario cancelar la operación de impresión, debe llamar a AbortDoc
antes de destruir el cuadro de diálogo.
Si se usó el Administrador de impresión para iniciar el trabajo de impresión, al llamar se AbortDoc
borra todo el trabajo de cola, la impresora no recibe nada. Si el Administrador de impresión no se usó para iniciar el trabajo de impresión, es posible que los datos se hayan enviado a la impresora antes AbortDoc
de llamarse. En este caso, el controlador de impresora habría restablecido la impresora (en caso de que fuera posible) y cerrado el trabajo de impresión.
Ejemplo
Vea el ejemplo de CDC::StartDoc
.
CDC::AbortPath
Cierra y descarta los trazados del contexto de dispositivo.
BOOL AbortPath();
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
Si hay un corchete de ruta de acceso abierto en el contexto del dispositivo, se cierra el corchete de ruta de acceso y se descarta la ruta de acceso. Si hay una ruta de acceso cerrada en el contexto del dispositivo, se descarta la ruta de acceso.
CDC::AddMetaFileComment
Copia el comentario de un búfer en un metarchivo especificado de formato mejorado.
BOOL AddMetaFileComment(
UINT nDataSize,
const BYTE* pCommentData);
Parámetros
nDataSize
Especifica la longitud del búfer de comentarios en bytes.
pCommentData
Apunta al búfer que contiene el comentario.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
Un comentario puede incluir cualquier información privada, por ejemplo, el origen de la imagen y la fecha en que se creó. Un comentario debe comenzar con una firma de aplicación, seguida de los datos. Los comentarios no deben contener datos específicos de la posición. Los datos específicos de la posición especifican la ubicación de un registro y no se deben incluir porque un metarchivo se puede incrustar dentro de otro metarchivo. Esta función solo se puede usar con metarchivos mejorados.
CDC::AlphaBlend
Llame a esta función miembro para mostrar mapas de bits que tienen píxeles transparentes o semitransparentes.
BOOL AlphaBlend(
int xDest,
int yDest,
int nDestWidth,
int nDestHeight,
CDC* pSrcDC,
int xSrc,
int ySrc,
int nSrcWidth,
int nSrcHeight,
BLENDFUNCTION blend);
Parámetros
xDest
Especifica la coordenada x, en unidades lógicas, de la esquina superior izquierda del rectángulo de destino.
yDest
Especifica la coordenada y, en unidades lógicas, de la esquina superior izquierda del rectángulo de destino.
nDestWidth
Especifica el ancho, en unidades lógicas, del rectángulo de destino.
nDestHeight
Especifica el alto, en unidades lógicas, del rectángulo de destino.
pSrcDC
Puntero al contexto de dispositivo de origen.
xSrc
Especifica la coordenada x, en unidades lógicas, de la esquina superior izquierda del rectángulo de origen.
ySrc
Especifica la coordenada y, en unidades lógicas, de la esquina superior izquierda del rectángulo de origen.
nSrcWidth
Especifica el ancho, en unidades lógicas, del rectángulo de origen.
nSrcHeight
Especifica el alto, en unidades lógicas, del rectángulo de origen.
blend
Especifica una estructura BLENDFUNCTION
.
Valor devuelto
TRUE
si es correcto; de lo contrario, FALSE
.
Comentarios
Para obtener más información, consulte el método AlphaBlend
en Windows SDK.
CDC::AngleArc
Dibuja un segmento de línea y un arco.
BOOL AngleArc(
int x,
int y,
int nRadius,
float fStartAngle,
float fSweepAngle);
Parámetros
x
Especifica la coordenada x lógica del centro del círculo.
y
Especifica la coordenada y lógica del centro del círculo.
nRadius
Especifica el radio del círculo en unidades lógicas. Este valor debe ser positivo.
fStartAngle
Especifica el ángulo inicial en grados en relación con el eje x.
fSweepAngle
Especifica el ángulo de barrido en grados en relación con el ángulo inicial.
Valor devuelto
Si es correcta, su valor es distinto de cero. En caso contrario, es cero.
Comentarios
El segmento de línea se dibuja desde la posición actual hasta el principio del arco. El arco se dibuja a lo largo del perímetro de un círculo con el radio y el centro especificados. La longitud del arco se define mediante los ángulos inicial y de barrido especificados.
AngleArc
mueve la posición actual al punto final del arco. El arco dibujado por esta función puede parecer elíptico, según el modo de transformación y asignación actual. Antes de dibujar el arco, esta función dibuja el segmento de línea desde la posición actual hasta el principio del arco. Para dibujar el arco, se construye un círculo imaginario con el radio especificado alrededor del punto central especificado. Para determinar el punto inicial del arco, se mide el número de grados del ángulo inicial en sentido contrario a las agujas del reloj desde el eje x del círculo. El punto final se determina de forma similar; para ello, se mide el número de grados del ángulo de barrido en sentido contrario a las agujas del reloj desde el punto inicial.
Si el ángulo de barrido tiene más de 360 grados, el arco realiza un barrido varias veces. Esta función dibuja líneas con el lápiz actual. La figura no se rellena.
CDC::Arc
Dibuja un arco elíptico.
BOOL Arc(
int x1,
int y1,
int x2,
int y2,
int x3,
int y3,
int x4,
int y4);
BOOL Arc(
LPCRECT lpRect,
POINT ptStart,
POINT ptEnd);
Parámetros
x1
Especifica la coordenada x de la esquina superior izquierda del rectángulo delimitador (en unidades lógicas).
y1
Especifica la coordenada y de la esquina superior izquierda del rectángulo delimitador (en unidades lógicas).
x2
Especifica la coordenada x de la esquina inferior derecha del rectángulo delimitador (en unidades lógicas).
y2
Especifica la coordenada y de la esquina inferior derecha del rectángulo delimitador (en unidades lógicas).
x3
Especifica la coordenada x del punto que define el punto inicial del arco (en unidades lógicas). Este punto no tiene que estar exactamente en el arco.
y3
Especifica la coordenada y del punto que define el punto inicial del arco (en unidades lógicas). Este punto no tiene que estar exactamente en el arco.
x4
Especifica la coordenada x del punto que define el punto final del arco (en unidades lógicas). Este punto no tiene que estar exactamente en el arco.
y4
Especifica la coordenada y del punto que define el punto final del arco (en unidades lógicas). Este punto no tiene que estar exactamente en el arco.
lpRect
Especifica el rectángulo delimitador (en unidades lógicas). Puede pasar un objeto LPRECT
o CRect
para este parámetro.
ptStart
Especifica las coordenadas x e y del punto que define el punto inicial del arco (en unidades lógicas). Este punto no tiene que estar exactamente en el arco. Puede pasar una POINT
estructura o un CPoint
objeto para este parámetro.
ptEnd
Especifica las coordenadas x e y del punto que define el punto final del arco (en unidades lógicas). Este punto no tiene que estar exactamente en el arco. Puede pasar una POINT
estructura o un CPoint
objeto para este parámetro.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
El arco dibujado mediante la función es un segmento de la elipse definido por el rectángulo delimitador especificado.
El punto inicial real del arco es el punto en el que un radio dibujado desde el centro del rectángulo delimitador y que pasa por el punto inicial especificado forma una intersección con la elipse. El punto final real del arco es el punto en el que un radio dibujado desde el centro del rectángulo delimitador y que pasa por el punto final especificado forma una intersección con la elipse. El arco se dibuja en sentido contrario a las agujas del reloj. Dado que un arco no es una figura cerrada, no se rellena. Tanto el ancho como el alto del rectángulo deben tener más de 2 unidades y menos de 32 767.
Ejemplo
void CDCView::DrawArc(CDC *pDC)
{
// Fill the client area with a thin circle. The circle's
// interior is not filled. The circle's perimeter is
// blue from 6 o'clock to 3 o'clock and red from 3
// o'clock to 6 o'clock.
// Get the client area.
CRect rectClient;
GetClientRect(rectClient);
// Make a couple of pens.
CPen penBlue;
CPen penRed;
CPen *pOldPen;
penBlue.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(0, 0, 255));
penRed.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(255, 0, 0));
// Draw from 3 o'clock to 6 o'clock, counterclockwise,
// in a blue pen.
pOldPen = pDC->SelectObject(&penBlue);
pDC->Arc(rectClient,
CPoint(rectClient.right, rectClient.CenterPoint().y),
CPoint(rectClient.CenterPoint().x, rectClient.right));
// Draw from 6 o'clock to 3 o'clock, counterclockwise,
// in a red pen.
pDC->SelectObject(&penRed);
// Keep the same parameters, but reverse start
// and end points.
pDC->Arc(rectClient,
CPoint(rectClient.CenterPoint().x, rectClient.right),
CPoint(rectClient.right, rectClient.CenterPoint().y));
// Restore the previous pen.
pDC->SelectObject(pOldPen);
}
CDC::ArcTo
Dibuja un arco elíptico.
BOOL ArcTo(
int x1,
int y1,
int x2,
int y2,
int x3,
int y3,
int x4,
int y4);
BOOL ArcTo(
LPCRECT lpRect,
POINT ptStart,
POINT ptEnd);
Parámetros
x1
Especifica la coordenada x de la esquina superior izquierda del rectángulo delimitador (en unidades lógicas).
y1
Especifica la coordenada y de la esquina superior izquierda del rectángulo delimitador (en unidades lógicas).
x2
Especifica la coordenada x de la esquina inferior derecha del rectángulo delimitador (en unidades lógicas).
y2
Especifica la coordenada y de la esquina inferior derecha del rectángulo delimitador (en unidades lógicas).
x3
Especifica la coordenada x del punto que define el punto inicial del arco (en unidades lógicas). Este punto no tiene que estar exactamente en el arco.
y3
Especifica la coordenada y del punto que define el punto inicial del arco (en unidades lógicas). Este punto no tiene que estar exactamente en el arco.
x4
Especifica la coordenada x del punto que define el punto final del arco (en unidades lógicas). Este punto no tiene que estar exactamente en el arco.
y4
Especifica la coordenada y del punto que define el punto final del arco (en unidades lógicas). Este punto no tiene que estar exactamente en el arco.
lpRect
Especifica el rectángulo delimitador (en unidades lógicas). Puede pasar un puntero a una estructura de datos RECT
o a un objeto CRect
para este parámetro.
ptStart
Especifica las coordenadas x e y del punto que define el punto inicial del arco (en unidades lógicas). Este punto no tiene que estar exactamente en el arco. Puede pasar una POINT
estructura de datos o un CPoint
objeto para este parámetro.
ptEnd
Especifica las coordenadas x e y del punto que define el punto final del arco (en unidades lógicas). Este punto no tiene que estar exactamente en el arco. Puede pasar una POINT
estructura de datos o un CPoint
objeto para este parámetro.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
Esta función es similar a CDC::Arc
, salvo que se actualiza la posición actual. Los puntos (x1
, y1
) y (x2
, y2
) especifican el rectángulo delimitador. Una elipse formada por el rectángulo delimitador especificado define la curva del arco. El arco se extiende en sentido contrario a las agujas del reloj (la dirección predeterminada del arco) desde el punto donde forma una intersección con la línea radial desde el centro del rectángulo delimitador hasta (*x3*
, y3
). El arco termina donde forma una intersección con la línea radial desde el centro del rectángulo delimitador hasta (x4
, y4
). Si el punto inicial y el punto final son el mismo, se dibuja una elipse completa.
Una línea se dibuja desde la posición actual hasta el punto inicial del arco. Si no se produce ningún error, la posición actual se establece en el punto final del arco. El arco se dibuja utilizando el lápiz actual; no está lleno.
CDC::Attach
Use esta función miembro para adjuntar hDC
al objeto CDC
.
BOOL Attach(HDC hDC);
Parámetros
hDC
Un contexto de dispositivo de Windows.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
hDC
se almacena en m_hDC
(el contexto de dispositivo de salida) y en m_hAttribDC
(el contexto de dispositivo de atributo).
CDC::BeginPath
Abre un corchete de trazado en el contexto de dispositivo.
BOOL BeginPath();
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
Una vez que se abre un corchete de trazado, una aplicación puede empezar a llamar a funciones de dibujo de GDI para definir los puntos que se encuentran en el trazado. Una aplicación puede cerrar un corchete de trazado abierto mediante una llamada a la función miembro EndPath
. Cuando una aplicación llama a BeginPath
, se descartan los trazados anteriores.
Consulte BeginPath
en Windows SDK para obtener una lista de las funciones de dibujo que definen puntos en un trazado.
Ejemplo
// This implementation uses GDI paths to draw the outline of
// some text in a TrueType font. The path is used to record the way
// the TrueType font would be drawn. Then, the function uses the data
// returned from CDC::GetPath() to draw the font--without filling it.
void CDCView::DrawPath(CDC *pDC)
{
// Describe a 24-point truetype font of normal weight
LOGFONT lf;
memset(&lf, 0, sizeof(lf));
lf.lfHeight = -MulDiv(24, pDC->GetDeviceCaps(LOGPIXELSY), 72);
lf.lfWeight = FW_NORMAL;
lf.lfOutPrecision = OUT_TT_ONLY_PRECIS;
// create and select it
CFont newFont;
if (!newFont.CreateFontIndirect(&lf))
return;
CFont *pOldFont = pDC->SelectObject(&newFont);
// use a path to record how the text was drawn
pDC->BeginPath();
pDC->TextOut(10, 10, _T("Outline this!"));
pDC->EndPath();
// Find out how many points are in the path. Note that
// for long strings or complex fonts, this number might be
// gigantic!
int nNumPts = pDC->GetPath(NULL, NULL, 0);
if (nNumPts == 0)
return;
// Allocate memory to hold points and stroke types from
// the path.
LPPOINT lpPoints = NULL;
LPBYTE lpTypes = NULL;
try
{
lpPoints = new POINT[nNumPts];
lpTypes = new BYTE[nNumPts];
}
catch (CException *pe)
{
delete[] lpPoints;
lpPoints = NULL;
delete[] lpTypes;
lpTypes = NULL;
pe->Delete();
}
if (lpPoints == NULL || lpTypes == NULL)
return;
// Now that we have the memory, really get the path data.
nNumPts = pDC->GetPath(lpPoints, lpTypes, nNumPts);
// If it worked, draw the lines. Windows 98 doesn't support
// the PolyDraw API, so we use our own member function to do
// similar work. If you're targeting only later versions of
// Windows, you can use the PolyDraw() API and avoid the
// COutlineView::PolyDraw() member function.
if (nNumPts != -1)
pDC->PolyDraw(lpPoints, lpTypes, nNumPts);
// Release the memory we used
delete[] lpPoints;
delete[] lpTypes;
// Put back the old font
pDC->SelectObject(pOldFont);
return;
}
CDC::BitBlt
Copia un mapa de bits desde el contexto del dispositivo de origen a este contexto de dispositivo actual.
BOOL BitBlt(
int x,
int y,
int nWidth,
int nHeight,
CDC* pSrcDC,
int xSrc,
int ySrc,
DWORD dwRop);
Parámetros
x
Especifica la coordenada x lógica de la esquina superior izquierda del rectángulo de destino.
y
Especifica la coordenada y lógica de la esquina superior izquierda del rectángulo de destino.
nWidth
Especifica el ancho (en unidades lógicas) del rectángulo de destino y del mapa de bits de origen.
nHeight
Especifica el alto (en unidades lógicas) del rectángulo de destino y del mapa de bits de origen.
pSrcDC
Puntero a un objeto CDC
que identifica el contexto de dispositivo desde el que se copiará el mapa de bits. Debe ser NULL
si dwRop
especifica una operación de trama que no incluye un origen.
xSrc
Especifica la coordenada x lógica de la esquina superior izquierda del mapa de bits de origen.
ySrc
Especifica la coordenada y lógica de la esquina superior izquierda del mapa de bits de origen.
dwRop
Especifica la operación de trama que se va a realizar. Los códigos de operación de trama definen cómo combina GDI los colores en las operaciones de salida que implican un pincel actual, un posible mapa de bits de origen y un mapa de bits de destino. Consulte BitBlt
en Windows SDK para obtener una lista de los códigos de operación de trama para dwRop
y sus descripciones.
Para obtener una lista completa de los códigos de operación de trama, consulte Acerca de los códigos de operación de trama en Windows SDK.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
La aplicación puede alinear las ventanas o áreas cliente en límites de bytes para asegurarse de que las operaciones BitBlt
se producen en rectángulos alineados por bytes. (Establezca las marcas CS_BYTEALIGNWINDOW
o CS_BYTEALIGNCLIENT
al registrar las clases de ventana).
BitBlt
Las operaciones en rectángulos alineados por bytes son considerablemente más rápidas que BitBlt
las operaciones en rectángulos que no están alineados por bytes. Si desea especificar estilos de clase como la alineación de bytes para su propio contexto de dispositivo, tendrá que registrar una clase de ventana en lugar de confiar en las clases de Microsoft Foundation para que lo haga automáticamente. Use la función global AfxRegisterWndClass
.
GDI transforma nWidth
y nHeight
, una vez mediante el contexto de dispositivo de destino y otra vez mediante el contexto de dispositivo de origen. Si las extensiones resultantes no coinciden, GDI usa la función de Windows StretchBlt
para comprimir o ampliar el mapa de bits de origen según sea necesario.
Si los mapas de bits de destino, origen y patrón no tienen el mismo formato de color, la BitBlt
función convierte los mapas de bits de origen y patrón para que coincidan con el destino. En la conversión se usan los colores de primer plano y de fondo del mapa de bits de destino.
Cuando la función BitBlt
convierte un mapa de bits monocromo a color, establece los bits blancos (1) al color de fondo y los bits negros (0) al color de primer plano. Se usan los colores de primer plano y de fondo del contexto de dispositivo de destino. Para convertir de color a monocromo, BitBlt
establece en blanco los píxeles que coinciden con el color de fondo y establece en negro todos los demás píxeles. BitBlt
usa los colores de primer plano y de fondo del contexto de dispositivo de color para convertir de color a monocromo.
No todos los contextos de dispositivo admiten BitBlt
. Para comprobar si un contexto de dispositivo determinado admite BitBlt
, use la función miembro GetDeviceCaps
y especifique el índice RASTERCAPS.
Ejemplo
Vea el ejemplo de CDC::CreateCompatibleDC
.
CDC::CDC
Construye un objeto CDC
.
CDC();
CDC::Chord
Dibuja una cuerda (una figura cerrada delimitada por la intersección de una elipse y un segmento de línea).
BOOL Chord(
int x1,
int y1,
int x2,
int y2,
int x3,
int y3,
int x4,
int y4);
BOOL Chord(
LPCRECT lpRect,
POINT ptStart,
POINT ptEnd);
Parámetros
x1
Especifica la coordenada x de la esquina superior izquierda del rectángulo delimitador de la cuerda (en unidades lógicas).
y1
Especifica la coordenada y de la esquina superior izquierda del rectángulo delimitador de la cuerda (en unidades lógicas).
x2
Especifica la coordenada x de la esquina inferior derecha del rectángulo delimitador de la cuerda (en unidades lógicas).
y2
Especifica la coordenada y de la esquina inferior derecha del rectángulo delimitador de la cuerda (en unidades lógicas).
x3
Especifica la coordenada x del punto que define el punto inicial de la cuerda (en unidades lógicas).
y3
Especifica la coordenada y del punto que define el punto inicial de la cuerda (en unidades lógicas).
x4
Especifica la coordenada x del punto que define el punto final de la cuerda (en unidades lógicas).
y4
Especifica la coordenada y del punto que define el punto final de la cuerda (en unidades lógicas).
lpRect
Especifica el rectángulo delimitador (en unidades lógicas). Puede pasar un objeto LPRECT
o CRect
para este parámetro.
ptStart
Especifica las coordenadas x e y del punto que define el punto inicial de la cuerda (en unidades lógicas). Este punto no tiene que mentir exactamente en el acorde. Puede pasar una estructura POINT
o un objeto CPoint
para este parámetro.
*ptEnd*
Especifica las coordenadas x e y del punto que define el punto final de la cuerda (en unidades lógicas). Este punto no tiene que mentir exactamente en el acorde. Puede pasar una estructura POINT
o un objeto CPoint
para este parámetro.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
Los parámetros (x1
, y1
) y (x2
, y2
) especifican las esquinas superior izquierda e inferior derecha, respectivamente, de un rectángulo que delimita la elipse que forma parte de la cuerda. Los parámetros (x3
, y3
) y (x4
, y4
) especifican los extremos de una línea que forma una intersección con la elipse. La cuerda se dibuja con el lápiz seleccionado y se rellena con el pincel seleccionado.
La ilustración dibujada por la Chord
función se extiende hasta , pero no incluye las coordenadas derecha e inferior. Esto significa que el alto de la figura es y2
- y1
y el ancho es x2
- x1
.
Ejemplo
void CDCView::DrawChord(CDC *pDC)
{
// Fill the client area with a circle. The circle is
// blue and filled with blue, but has a chord cut out
// of it from 3 o'clock to 6 o'clock. That chord is
// red and filled with a red diagonal hatch.
// Get the client area.
CRect rectClient;
GetClientRect(rectClient);
// Make a couple of pens and similar brushes.
CPen penBlue, penRed;
CBrush brushBlue, brushRed;
CBrush *pOldBrush;
CPen *pOldPen;
brushBlue.CreateSolidBrush(RGB(0, 0, 255));
brushRed.CreateHatchBrush(HS_FDIAGONAL, RGB(255, 0, 0));
penBlue.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(0, 0, 255));
penRed.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(255, 0, 0));
// Draw from 3 o'clock to 6 o'clock, counterclockwise,
// in a blue pen with a solid blue fill.
pOldPen = pDC->SelectObject(&penBlue);
pOldBrush = pDC->SelectObject(&brushBlue);
pDC->Chord(rectClient,
CPoint(rectClient.right, rectClient.CenterPoint().y),
CPoint(rectClient.CenterPoint().x, rectClient.right));
// Draw the remaining quarter chord from 6 o'clock
// to 3 o'clock, counterclockwise, in a red pen
// with the hatched brush.
pDC->SelectObject(&penRed);
pDC->SelectObject(&brushRed);
// Keep the same parameters, but reverse start and
// end points.
pDC->Chord(rectClient,
CPoint(rectClient.CenterPoint().x, rectClient.right),
CPoint(rectClient.right, rectClient.CenterPoint().y));
// Restore the previous pen.
pDC->SelectObject(pOldPen);
}
CDC::CloseFigure
Cierra una figura abierta en un trazado.
BOOL CloseFigure();
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
Para cerrar la figura, la función dibuja una línea desde la posición actual hasta el primer punto de la figura (normalmente, el punto especificado por la llamada más reciente a la función miembro MoveTo
) y conecta las líneas mediante el estilo de unión de líneas. Si una figura se cierra mediante la función miembro LineTo
, en lugar de CloseFigure
, se usan extremos para crear la esquina, en lugar de una unión. CloseFigure
solo se debe llamar a si hay un corchete de ruta de acceso abierto en el contexto del dispositivo.
Se abre una figura de una ruta de acceso a menos que se cierre explícitamente mediante esta función. (Una figura puede estar abierta incluso si su punto actual y su punto inicial son los mismos). Cualquier línea o curva agregada al trazado después de CloseFigure
inicia una figura nueva.
CDC::CreateCompatibleDC
Crea un contexto de dispositivo de memoria que es compatible con el dispositivo especificado por pDC
.
BOOL CreateCompatibleDC(CDC* pDC);
Parámetros
pDC
Puntero a un contexto de dispositivo. Si pDC
es NULL
, la función crea un contexto de dispositivo de memoria que es compatible con la visualización del sistema.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
Un contexto de dispositivo de memoria es un bloque de memoria que representa una superficie de visualización. Se puede usar para preparar imágenes en memoria antes de copiarlas en la superficie real del dispositivo compatible.
Cuando se crea un contexto de dispositivo de memoria, GDI selecciona automáticamente para él un mapa de bits monocromo de 1 a 1. Las funciones de salida de GDI solo se pueden usar con un contexto de dispositivo de memoria si se ha creado y seleccionado un mapa de bits en ese contexto.
Esta función solo se puede usar para crear contextos de dispositivo compatibles para los dispositivos que admiten operaciones de trama. Consulte la función miembro CDC::BitBlt
para obtener información sobre las transferencias de bloques de bits entre contextos de dispositivo. Para determinar si un contexto de dispositivo admite las operaciones de trama, consulte la funcionalidad de trama RC_BITBLT
en la función miembro CDC::GetDeviceCaps
.
Ejemplo
// This handler loads a bitmap from system resources,
// centers it in the view, and uses BitBlt() to paint the bitmap
// bits.
void CDCView::DrawBitmap(CDC *pDC)
{
// load IDB_BITMAP1 from our resources
CBitmap bmp;
if (bmp.LoadBitmap(IDB_BITMAP1))
{
// Get the size of the bitmap
BITMAP bmpInfo;
bmp.GetBitmap(&bmpInfo);
// Create an in-memory DC compatible with the
// display DC we're using to paint
CDC dcMemory;
dcMemory.CreateCompatibleDC(pDC);
// Select the bitmap into the in-memory DC
CBitmap *pOldBitmap = dcMemory.SelectObject(&bmp);
// Find a centerpoint for the bitmap in the client area
CRect rect;
GetClientRect(&rect);
int nX = rect.left + (rect.Width() - bmpInfo.bmWidth) / 2;
int nY = rect.top + (rect.Height() - bmpInfo.bmHeight) / 2;
// Copy the bits from the in-memory DC into the on-
// screen DC to actually do the painting. Use the centerpoint
// we computed for the target offset.
pDC->BitBlt(nX, nY, bmpInfo.bmWidth, bmpInfo.bmHeight, &dcMemory,
0, 0, SRCCOPY);
dcMemory.SelectObject(pOldBitmap);
}
else
{
TRACE0("ERROR: Where's IDB_BITMAP1?\n");
}
}
CDC::CreateDC
Crea un contexto de dispositivo para el dispositivo especificado.
BOOL CreateDC(
LPCTSTR lpszDriverName,
LPCTSTR lpszDeviceName,
LPCTSTR lpszOutput,
const void* lpInitData);
Parámetros
lpszDriverName
Apunta a una cadena terminada en null que especifica el nombre de archivo (sin extensión) del controlador de dispositivo (por ejemplo, "EPSON
"). También puede pasar un objeto CString
para este parámetro.
lpszDeviceName
Apunta a una cadena terminada en null que especifica el nombre del dispositivo específico que se va a admitir (por ejemplo, "EPSON FX-80
"). Se usa el parámetro lpszDeviceName
si el módulo admite más de un dispositivo. También puede pasar un objeto CString
para este parámetro.
lpszOutput
Apunta a una cadena terminada en null que especifica el nombre de dispositivo o archivo para el medio de salida físico (puerto de salida o archivo). También puede pasar un objeto CString
para este parámetro.
lpInitData
Apunta a una estructura DEVMODE
que contiene datos de inicialización específicos del dispositivo para el controlador de dispositivo. La función DocumentProperties
de Windows recupera esta estructura rellenada para un dispositivo determinado. El parámetro lpInitData
debe ser NULL
si el controlador de dispositivo debe usar la inicialización predeterminada (si existe) que el usuario ha especificado en el Panel de control.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
Se requiere el archivo de encabezado PRINT.H
si se usa la estructura DEVMODE
.
Los nombres de dispositivo siguen estas convenciones. Se recomienda usar dos puntos finales (:), pero es opcional. Windows quita los dos puntos finales para que un nombre de dispositivo que termine con dos puntos se asigne al mismo puerto que el mismo nombre sin los dos puntos. Los nombres de controlador y puerto no deben contener espacios iniciales o finales. Las funciones de salida de GDI no se pueden usar con contextos de información.
CDC::CreateIC
Crea un contexto de información para el dispositivo especificado.
BOOL CreateIC(
LPCTSTR lpszDriverName,
LPCTSTR lpszDeviceName,
LPCTSTR lpszOutput,
const void* lpInitData);
Parámetros
lpszDriverName
Apunta a una cadena terminada en null que especifica el nombre de archivo (sin extensión) del controlador de dispositivo (por ejemplo, "EPSON
"). Puede pasar un objeto CString
para este parámetro.
lpszDeviceName
Apunta a una cadena terminada en null que especifica el nombre del dispositivo específico que se va a admitir (por ejemplo, "EPSON FX-80
"). Se usa el parámetro lpszDeviceName
si el módulo admite más de un dispositivo. Puede pasar un objeto CString
para este parámetro.
lpszOutput
Apunta a una cadena terminada en null que especifica el nombre de dispositivo o archivo para el medio de salida físico (puerto o archivo). Puede pasar un objeto CString
para este parámetro.
lpInitData
Apunta a los datos de inicialización específicos del dispositivo para el controlador de dispositivo. El parámetro lpInitData
debe ser NULL
si el controlador de dispositivo debe usar la inicialización predeterminada (si existe) que el usuario ha especificado en el Panel de control. Consulte CreateDC
para ver el formato de datos para la inicialización específica del dispositivo.
Valor devuelto
Si es correcta, su valor es distinto de cero. En caso contrario, es cero.
Comentarios
El contexto de información proporciona una manera rápida de obtener información sobre el dispositivo sin necesidad de crear un contexto de dispositivo.
Los nombres de dispositivo siguen estas convenciones. Se recomienda usar dos puntos finales (:), pero es opcional. Windows quita los dos puntos finales para que un nombre de dispositivo que termine con dos puntos se asigne al mismo puerto que el mismo nombre sin los dos puntos. Los nombres de controlador y puerto no deben contener espacios iniciales o finales. Las funciones de salida de GDI no se pueden usar con contextos de información.
CDC::DeleteDC
En general, no llame a esta función; el destructor lo hará por usted.
BOOL DeleteDC();
Valor devuelto
Distinto de cero si la operación se ha realizado correctamente; en caso contrario, cero.
Comentarios
La función miembro DeleteDC
elimina los contextos de dispositivo de Windows que están asociados con m_hDC
en el objeto CDC
actual. Si este CDC
objeto es el último contexto de dispositivo activo para un dispositivo determinado, se liberan todos los recursos de almacenamiento y sistema utilizados por el dispositivo.
Una aplicación no debe llamar DeleteDC
a si se han seleccionado objetos en el contexto del dispositivo. Los objetos deben seleccionarse primero fuera del contexto del dispositivo antes de eliminarlos.
Una aplicación no debe eliminar un contexto de dispositivo cuyo identificador se haya obtenido mediante una llamada a CWnd::GetDC
. En su lugar, debe llamar a CWnd::ReleaseDC
para liberar el contexto de dispositivo. Las clases CClientDC
y CWindowDC
se proporcionan para encapsular esta funcionalidad.
La función DeleteDC
se usa generalmente para eliminar contextos de dispositivo creados con CreateDC
, CreateIC
o CreateCompatibleDC
.
Ejemplo
Vea el ejemplo de CPrintDialog::GetPrinterDC
.
CDC::DeleteTempMap
Llamado automáticamente por el CWinApp
controlador de tiempo de inactividad, DeleteTempMap
elimina los objetos temporales CDC
creados por FromHandle
, pero no destruye los identificadores (hDC
s) de contexto del dispositivo asociados temporalmente a los CDC
objetos.
static void PASCAL DeleteTempMap();
CDC::Detach
Llame a esta función para desasociar m_hDC
(el contexto de dispositivo de salida) del objeto CDC
y establecer m_hDC
y m_hAttribDC
en NULL
.
HDC Detach();
Valor devuelto
Un contexto de dispositivo de Windows.
CDC::DPtoHIMETRIC
Use esta función cuando asigne tamaños HIMETRIC
a OLE, lo que convierte los píxeles en HIMETRIC
.
void DPtoHIMETRIC(LPSIZE lpSize) const;
Parámetros
lpSize
Apunta a una estructura SIZE o un objeto CSize
.
Comentarios
Si el modo de asignación del objeto de contexto del dispositivo es MM_LOENGLISH
, MM_HIENGLISH
, MM_LOMETRIC
o MM_HIMETRIC
, la conversión se basa en el número de píxeles de la pulgada física. Si el modo de asignación es uno de los otros modos no restringidos (por ejemplo, MM_TEXT
), la conversión se basa en el número de píxeles de la pulgada lógica.
CDC::DPtoLP
Convierte las unidades de dispositivo en unidades lógicas.
void DPtoLP(
LPPOINT lpPoints,
int nCount = 1) const;
void DPtoLP(LPRECT lpRect) const;
void DPtoLP(LPSIZE lpSize) const;
Parámetros
lpPoints
Apunta a una matriz de estructuras POINT
u objetos CPoint
.
nCount
Número de puntos de la matriz.
lpRect
Apunta a una estructura RECT
o un objeto CRect
. Este parámetro se usa para el sencillo caso de convertir un rectángulo de puntos de dispositivo a puntos lógicos.
lpSize
Apunta a una estructura SIZE
o un objeto CSize
.
Comentarios
La función asigna las coordenadas de cada punto, o dimensión de un tamaño, del sistema de coordenadas del dispositivo al sistema de coordenadas lógicas de GDI. La conversión depende del modo de asignación actual y de la configuración de los orígenes y extensiones de la ventana y el área de visualización del dispositivo.
CDC::Draw3dRect
Llame a esta función miembro para dibujar un rectángulo tridimensional.
void Draw3dRect(
LPCRECT lpRect,
COLORREF clrTopLeft,
COLORREF clrBottomRight);
void Draw3dRect(
int x,
int y,
int cx,
int cy,
COLORREF clrTopLeft,
COLORREF clrBottomRight);
Parámetros
lpRect
Especifica el rectángulo delimitador (en unidades lógicas). Puede pasar un puntero a una estructura RECT
o a un objeto CRect
para este parámetro.
clrTopLeft
Especifica el color de los lados superior e izquierdo del rectángulo tridimensional.
clrBottomRight
Especifica el color de los lados inferior y derecho del rectángulo tridimensional.
x
Especifica la coordenada x lógica de la esquina superior izquierda del rectángulo tridimensional.
y
Especifica la coordenada y lógica de la esquina superior izquierda del rectángulo tridimensional.
cx
Especifica el ancho del rectángulo tridimensional.
cy
Especifica el alto del rectángulo tridimensional.
Comentarios
El rectángulo se dibujará con los lados superior e izquierdo del color especificado por clrTopLeft
, y los lados inferior y derecho del color especificado por clrBottomRight
.
Ejemplo
void CDCView::Draw3dRect(CDC *pDC)
{
// get the client area
CRect rect;
GetClientRect(rect);
// shrink our rect 20 pixels on all sides
rect.DeflateRect(20, 20);
// draw a rectangle with red top and left sides, and
// green right and bottom sides.
pDC->Draw3dRect(rect, RGB(255, 0, 0), RGB(0, 255, 0));
// This call to the four-integer override would draw
// the same rectangle with a little less convenience:
// pDC->Draw3dRect(rect.left, rect.top, rect.Width(), rect.Height(),
// RGB(255, 0, 0), RGB(0, 255, 0));
}
CDC::DrawDragRect
Llame a esta función miembro repetidamente para volver a dibujar un rectángulo de arrastre.
void DrawDragRect(
LPCRECT lpRect,
SIZE size,
LPCRECT lpRectLast,
SIZE sizeLast,
CBrush* pBrush = NULL,
CBrush* pBrushLast = NULL);
Parámetros
lpRect
Apunta a una estructura RECT
o un objeto CRect
que especifica las coordenadas lógicas de un rectángulo, en este caso, la posición final del rectángulo que se vuelve a dibujar.
size
Especifica el desplazamiento desde la esquina superior izquierda del borde externo hasta la esquina superior izquierda del borde interno (es decir, el grosor del borde) de un rectángulo.
lpRectLast
Apunta a una estructura RECT
o un objeto CRect
que especifica las coordenadas lógicas de la posición de un rectángulo, en este caso, la posición origen del rectángulo que se vuelve a dibujar.
sizeLast
Especifica el desplazamiento desde la esquina superior izquierda del borde externo hasta la esquina superior izquierda del borde interno (es decir, el grosor del borde) del rectángulo original que se vuelve a dibujar.
pBrush
Puntero a un objeto de pincel. Establézcalo en NULL
para usar el pincel de semitonos predeterminado.
pBrushLast
Puntero al último objeto de pincel usado. Establézcalo en NULL
para usar el pincel de semitonos predeterminado.
Comentarios
Llámelo en un bucle a medida que muestree la posición del mouse para proporcionar comentarios visuales. Cuando se llama a DrawDragRect
, se borra el rectángulo anterior y se dibuja uno nuevo. Por ejemplo, cuando el usuario arrastre un rectángulo a lo largo de la pantalla, DrawDragRect
borrará el rectángulo original y volverá a dibujar uno nuevo en su nueva posición. De forma predeterminada, DrawDragRect
dibuja el rectángulo con un pincel de semitonos para eliminar el parpadeo y crear la apariencia de un rectángulo que se mueve suavemente.
La primera vez que llame a DrawDragRect
, el parámetro lpRectLast
debe ser NULL
.
CDC::DrawEdge
Llame a esta función miembro para dibujar los bordes de un rectángulo del tipo y estilo especificados.
BOOL DrawEdge(
LPRECT lpRect,
UINT nEdge,
UINT nFlags);
Parámetros
lpRect
Puntero a una estructura RECT
que contiene las coordenadas lógicas del rectángulo.
nEdge
Especifica el tipo de borde interno y externo que se va a dibujar. Este parámetro debe ser una combinación de una marca de borde interno y una marca de borde externo. Consulte DrawEdge
en Windows SDK para obtener una tabla de los tipos del parámetro.
nFlags
Marcas que especifican el tipo de borde que se va a dibujar. Consulte DrawEdge
en Windows SDK para obtener una tabla de los valores del parámetro. En el caso de las líneas diagonales, las marcas BF_RECT
especifican el punto final del vector limitado por el parámetro de rectángulo.
Valor devuelto
Si es correcta, su valor es distinto de cero. En caso contrario, es cero.
CDC::DrawEscape
Accede a las funcionalidades de dibujo de una pantalla de vídeo que no están disponibles directamente a través de la interfaz de dispositivo gráfico (GDI).
int DrawEscape(
int nEscape,
int nInputSize,
LPCSTR lpszInputData);
Parámetros
nEscape
Especifica la función de escape que se va a realizar.
nInputSize
Especifica el número de bytes de los datos a los que apunta el parámetro lpszInputData
.
lpszInputData
Apunta a la estructura de entrada necesaria para el escape especificado.
Valor devuelto
Especifica el resultado de la función . Mayor que cero si se ejecuta correctamente, excepto para el QUERYESCSUPPORT
escape de dibujo, que comprueba solo la implementación; o cero si no se implementa el escape; o menor que cero si se produjo un error.
Comentarios
Cuando una aplicación llama a DrawEscape
, los datos identificados por nInputSize
y lpszInputData
se pasan directamente al controlador de visualización especificado.
CDC::DrawFocusRect
Dibuja un rectángulo con el estilo usado para indicar que el rectángulo tiene el foco.
void DrawFocusRect(LPCRECT lpRect);
Parámetros
lpRect
Apunta a una estructura RECT
o un objeto CRect
que especifica las coordenadas lógicas del rectángulo que se va a dibujar.
Comentarios
Puesto que se trata de una función XOR booleana (^
), si se llama a esta función una segunda vez con el mismo rectángulo, se quita el rectángulo de la pantalla. No es posible desplazarse por el rectángulo dibujado por esta función. Para desplazarse por un área que contiene un rectángulo dibujado por esta función, primero llame a DrawFocusRect
para quitar el rectángulo de la visualización y, luego, desplácese por el área y vuelva a llamar a DrawFocusRect
para dibujar el rectángulo en la nueva posición.
Precaución
DrawFocusRect
solo funciona en modo MM_TEXT
. En otros modos, esta función no dibuja correctamente el rectángulo de foco, pero no devuelve valores de error.
CDC::DrawFrameControl
Llame a esta función miembro para dibujar un control de marco del tipo y estilo especificados.
BOOL DrawFrameControl(
LPRECT lpRect,
UINT nType,
UINT nState);
Parámetros
lpRect
Puntero a una estructura RECT
que contiene las coordenadas lógicas del rectángulo.
nType
Especifica el tipo de control de marco que se va a dibujar. Consulte el parámetro uType
en DrawFrameControl
en Windows SDK para obtener una lista de los valores posibles de este parámetro.
nState
Especifica el estado inicial del control de marco. Puede ser uno o varios de los valores que se describen para el parámetro uState
en DrawFrameControl
en Windows SDK. Use el valor nState
DFCS_ADJUSTRECT
para ajustar el rectángulo delimitador para excluir el borde circundante del botón de comando.
Valor devuelto
Si es correcta, su valor es distinto de cero. En caso contrario, es cero.
Comentarios
En varios casos, nState
depende del parámetro nType
. En la lista siguiente se muestra la relación entre los cuatro valores nType
y nState
:
DFC_BUTTON
DFCS_BUTTON3STATE
: botón de tres estadosDFCS_BUTTONCHECK
: casilla de verificaciónDFCS_BUTTONPUSH
: botón de comandoDFCS_BUTTONRADIO
: botón de radioDFCS_BUTTONRADIOIMAGE
: imagen para el botón de radio (si no es cuadrado, necesita una imagen)DFCS_BUTTONRADIOMASK
: máscara para el botón de radio (si no es cuadrado, necesita una máscara)
DFC_CAPTION
DFCS_CAPTIONCLOSE
: botón CerrarDFCS_CAPTIONHELP
: botón AyudaDFCS_CAPTIONMAX
: botón MaximizarDFCS_CAPTIONMIN
: botón MinimizarDFCS_CAPTIONRESTORE
: botón Restaurar
DFC_MENU
DFCS_MENUARROW
: flecha de submenúDFCS_MENUBULLET
: viñetaDFCS_MENUCHECK
: marca de verificación
DFC_SCROLL
DFCS_SCROLLCOMBOBOX
: barra de desplazamiento de cuadro combinadoDFCS_SCROLLDOWN
: flecha abajo de barra de desplazamientoDFCS_SCROLLLEFT
: flecha izquierda de barra de desplazamientoDFCS_SCROLLRIGHT
: flecha derecha de barra de desplazamientoDFCS_SCROLLSIZEGRIP
: control de ajuste de tamaño de la esquina inferior derecha de la ventanaDFCS_SCROLLUP
: flecha arriba de barra de desplazamiento
Ejemplo
Este código dibuja el control de ajuste de tamaño en la esquina inferior derecha de la ventana. Es adecuado para el controlador OnPaint
de un cuadro de diálogo, que no tiene estilos y normalmente no contiene otros controles (como una barra de estado) que podrían proporcionarle un control de ajuste de tamaño.
void CDCView::DrawFC(CDC *pDC)
{
CRect rc;
GetClientRect(&rc);
rc.left = rc.right - ::GetSystemMetrics(SM_CXHSCROLL);
rc.top = rc.bottom - ::GetSystemMetrics(SM_CYVSCROLL);
pDC->DrawFrameControl(rc, DFC_SCROLL, DFCS_SCROLLSIZEGRIP);
}
CDC::DrawIcon
Dibuja un icono en el dispositivo representado por el objeto CDC
actual.
BOOL DrawIcon(
int x,
int y,
HICON hIcon);
BOOL DrawIcon(
POINT point,
HICON hIcon);
Parámetros
x
Especifica la coordenada x lógica de la esquina superior izquierda del icono.
y
Especifica la coordenada y lógica de la esquina superior izquierda del icono.
hIcon
Identifica el identificador del icono que se va a dibujar.
point
Especifica las coordenadas x e y lógicas de la esquina superior izquierda del icono. Puede pasar una estructura POINT
o un objeto CPoint
para este parámetro.
Valor devuelto
Distinto de cero si la operación se ha realizado correctamente; en caso contrario, cero.
Comentarios
La función coloca la esquina superior izquierda del icono en la ubicación especificada por x
y y
. La ubicación está sujeta al modo de asignación actual del contexto de dispositivo.
El recurso de icono debe haberse cargado previamente mediante las funciones CWinApp::LoadIcon
, CWinApp::LoadStandardIcon
o CWinApp::LoadOEMIcon
. Debe seleccionarse el modo de asignación MM_TEXT
antes de usar esta función.
Ejemplo
Vea el ejemplo de CWnd::IsIconic
.
CDC::DrawState
Llame a esta función miembro para mostrar una imagen y aplicar un efecto visual para indicar un estado, como deshabilitado o predeterminado.
Nota:
Para todos los estados nFlag
excepto DSS_NORMAL
, la imagen se convierte en monocroma antes de aplicar el efecto visual.
BOOL DrawState(
CPoint pt,
CSize size,
HBITMAP hBitmap,
UINT nFlags,
HBRUSH hBrush = NULL);
BOOL DrawState(
CPoint pt,
CSize size,
CBitmap* pBitmap,
UINT nFlags,
CBrush* pBrush = NULL);
BOOL DrawState(
CPoint pt,
CSize size,
HICON hIcon,
UINT nFlags,
HBRUSH hBrush = NULL);
BOOL DrawState(
CPoint pt,
CSize size,
HICON hIcon,
UINT nFlags,
CBrush* pBrush = NULL);
BOOL DrawState(
CPoint pt,
CSize size,
LPCTSTR lpszText,
UINT nFlags,
BOOL bPrefixText = TRUE,
int nTextLen = 0,
HBRUSH hBrush = NULL);
BOOL DrawState(
CPoint pt,
CSize size,
LPCTSTR lpszText,
UINT nFlags,
BOOL bPrefixText = TRUE,
int nTextLen = 0,
CBrush* pBrush = NULL);
BOOL DrawState(
CPoint pt,
CSize size,
DRAWSTATEPROC lpDrawProc,
LPARAM lData,
UINT nFlags,
HBRUSH hBrush = NULL);
BOOL DrawState(
CPoint pt,
CSize size,
DRAWSTATEPROC lpDrawProc,
LPARAM lData,
UINT nFlags,
CBrush* pBrush = NULL);
Parámetros
pt
Especifica la ubicación de la imagen.
size
Especifica el tamaño de la imagen.
hBitmap
Identificador de un mapa de bits.
nFlags
Marcas que especifican el tipo y el estado de la imagen. Consulte DrawState
en Windows SDK para conocer los posibles tipos y estados de nFlags.
hBrush
Identificador de un pincel.
pBitmap
Puntero a un objeto CBitmap
.
pBrush
Puntero a un objeto CBrush
.
hIcon
Identificador de un icono.
lpszText
Puntero a texto.
bPrefixText
Texto que puede contener una tecla de acceso de acelerador. El parámetro lData
especifica la dirección de la cadena y el parámetro nTextLen
especifica la longitud. Si nTextLen
es 0, se supone que la cadena termina en null.
nTextLen
Longitud de la cadena de texto a la que apunta lpszText
. Si nTextLen
es 0, se supone que la cadena termina en null.
lpDrawProc
Puntero a una función de devolución de llamada que se usa para representar una imagen. Este parámetro es necesario si el tipo de imagen de nFlags
es DST_COMPLEX
. Es opcional y puede ser NULL
si el tipo de imagen es DST_TEXT
. En el caso de los demás tipos de imagen, este parámetro se omite. Para obtener más información sobre la función de devolución de llamada, consulte la función DrawStateProc
en Windows SDK.
lData
Especifica información sobre la imagen. El significado de este parámetro depende del tipo de imagen.
Valor devuelto
Si es correcta, su valor es distinto de cero. En caso contrario, es cero.
CDC::DrawText
Llame a esta función miembro para dar formato al texto en el rectángulo especificado. Para especificar más opciones de formato, use CDC::DrawTextEx
.
virtual int DrawText(
LPCTSTR lpszString,
int nCount,
LPRECT lpRect,
UINT nFormat);
int DrawText(
const CString& str,
LPRECT lpRect,
UINT nFormat);
Parámetros
lpszString
Apunta a la cadena que se va a dibujar. Si nCount
es -1, la cadena debe terminar en null.
nCount
Especifica el número de caracteres de la cadena. Si nCount
es -1, se supone que lpszString
es un puntero largo a una cadena terminada en null y DrawText
calcula el recuento de caracteres automáticamente.
lpRect
Apunta a una estructura RECT
o un objeto CRect
que contiene el rectángulo (en coordenadas lógicas) en el que se va a dar formato al texto.
str
Objeto CString
que contiene los caracteres especificados que se van a dibujar.
nFormat
Especifica el método de aplicación de formato al texto. Puede ser cualquier combinación de los valores que se describen para el parámetro uFormat
en DrawText
en Windows SDK. (Combínelos con el operador OR bit a bit).
Nota:
Algunas combinaciones de marcas uFormat
pueden hacer que se modifique la cadena pasada. El uso de DT_MODIFYSTRING
con DT_END_ELLIPSIS
o DT_PATH_ELLIPSIS
puede hacer que la cadena se modifique, lo que provoca una aserción en la invalidación CString
. Los valores DT_CALCRECT
, DT_EXTERNALLEADING
, DT_INTERNAL
, DT_NOCLIP
y DT_NOPREFIX
no pueden usarse con el valor DT_TABSTOP
.
Valor devuelto
El alto del texto si la función se realiza correctamente.
Comentarios
Da formato al texto, para lo que expande tabulaciones en los espacios adecuados, alinea el texto a la izquierda, derecha o centro del rectángulo especificado y divide el texto en líneas que caben en el rectángulo especificado. El tipo de formato se especifica mediante nFormat
.
Esta función miembro usa la fuente seleccionada del contexto de dispositivo, el color de texto y el color de fondo para dibujar el texto. A menos que se use el DT_NOCLIP
formato, DrawText
clips el texto para que el texto no aparezca fuera del rectángulo especificado. Se supone que todo el formato tiene varias líneas, a menos que se especifique el formato DT_SINGLELINE
.
Si la fuente seleccionada es demasiado grande para el rectángulo especificado, la DrawText
función miembro no intenta sustituir una fuente más pequeña.
Si se especifica la marca DT_CALCRECT
, el rectángulo especificado por lpRect
se actualizará para reflejar el ancho y el alto necesarios para dibujar el texto.
Si se ha establecido la marca de alineación de texto TA_UPDATECP
(vea CDC::SetTextAlign
), DrawText
mostrará el texto que empieza en la posición actual, en lugar de a la izquierda del rectángulo especificado. DrawText
no ajustará el texto cuando se haya establecido la TA_UPDATECP
marca (es decir, la DT_WORDBREAK
marca no tendrá ningún efecto).
El color del texto se puede establecer mediante CDC::SetTextColor
.
CDC::DrawTextEx
Aplica formato al texto del rectángulo especificado.
virtual int DrawTextEx(
LPTSTR lpszString,
int nCount,
LPRECT lpRect,
UINT nFormat,
LPDRAWTEXTPARAMS lpDTParams);
int DrawTextEx(
const CString& str,
LPRECT lpRect,
UINT nFormat,
LPDRAWTEXTPARAMS lpDTParams);
Parámetros
lpszString
Apunta a la cadena que se va a dibujar. Si nCount
es -1, la cadena debe terminar en null.
nCount
Especifica el número de caracteres de la cadena. Si nCount
es -1, se supone que lpszString
es un puntero largo a una cadena terminada en null y DrawText
calcula el recuento de caracteres automáticamente.
lpRect
Apunta a una estructura RECT
o un objeto CRect
que contiene el rectángulo (en coordenadas lógicas) en el que se va a dar formato al texto.
str
Objeto CString
que contiene los caracteres especificados que se van a dibujar.
nFormat
Especifica el método de aplicación de formato al texto. Puede ser cualquier combinación de los valores que se describen para el parámetro uFormat
en DrawText
en Windows SDK. (Combínelos con el operador OR bit a bit).
Nota:
Algunas combinaciones de marcas uFormat
pueden hacer que se modifique la cadena pasada. El uso de DT_MODIFYSTRING
con DT_END_ELLIPSIS
o DT_PATH_ELLIPSIS
puede hacer que la cadena se modifique, lo que provoca una aserción en la invalidación CString
. Los valores DT_CALCRECT
, DT_EXTERNALLEADING
, DT_INTERNAL
, DT_NOCLIP
y DT_NOPREFIX
no pueden usarse con el valor DT_TABSTOP
.
lpDTParams
Puntero a una DRAWTEXTPARAMS
estructura que especifica más opciones de formato. Este parámetro puede ser NULL
.
Comentarios
Da formato al texto, para lo que expande tabulaciones en los espacios adecuados, alinea el texto a la izquierda, derecha o centro del rectángulo especificado y divide el texto en líneas que caben en el rectángulo especificado. El tipo de formato se especifica mediante nFormat
y lpDTParams
. Para obtener más información, consulte CDC::DrawText
y DrawTextEx
en Windows SDK.
El color del texto se puede establecer mediante CDC::SetTextColor
.
CDC::Ellipse
Dibuja una elipse.
BOOL Ellipse(
int x1,
int y1,
int x2,
int y2);
BOOL Ellipse(LPCRECT lpRect);
Parámetros
x1
Especifica la coordenada x lógica de la esquina superior izquierda del rectángulo delimitador de la elipse.
y1
Especifica la coordenada y lógica de la esquina superior izquierda del rectángulo delimitador de la elipse.
x2
Especifica la coordenada x lógica de la esquina inferior derecha del rectángulo delimitador de la elipse.
y2
Especifica la coordenada y lógica de la esquina inferior derecha del rectángulo delimitador de la elipse.
lpRect
Especifica el rectángulo delimitador de la elipse. También puede pasar un objeto CRect
para este parámetro.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
El centro de la elipse es el centro del rectángulo delimitador especificado por x1
, y1
, x2
y y2
, o lpRect
. La elipse se dibuja con el lápiz actual y su interior se rellena con el pincel actual.
La ilustración dibujada por esta función se extiende hasta, pero no incluye, las coordenadas derecha e inferior. Esto significa que el alto de la figura es y2
- y1
y el ancho es x2
- x1
.
Si el ancho o el alto del rectángulo delimitador es 0, no se dibuja ninguna elipse.
CDC::EndDoc
Finaliza un trabajo de impresión iniciado por una llamada a la función miembro StartDoc
.
int EndDoc();
Valor devuelto
Mayor o igual que 0 si la función se realiza correctamente, o un valor negativo si se ha producido un error.
Comentarios
Esta función miembro reemplaza el escape de la impresora ENDDOC
y debe llamarse a ella inmediatamente después de finalizar un trabajo de impresión correcto.
Si una aplicación encuentra un error de impresión o una operación de impresión cancelada, no debe intentar finalizar la operación mediante EndDoc
o AbortDoc
. GDI finaliza automáticamente la operación antes de devolver el valor de error.
Esta función no se debe usar dentro de los metarchivos.
Ejemplo
Vea el ejemplo de CDC::StartDoc
.
CDC::EndPage
Informa al dispositivo de que la aplicación ha terminado de escribir en una página.
int EndPage();
Valor devuelto
Mayor o igual que 0 si la función se realiza correctamente, o un valor negativo si se ha producido un error.
Comentarios
Esta función miembro se usa normalmente para indicarle al controlador de dispositivo que avance a una página nueva.
Esta función miembro reemplaza el escape de impresora NEWFRAME
. A diferencia de NEWFRAME
, siempre se llama a esta función después de imprimir una página.
Ejemplo
Vea el ejemplo de CDC::StartDoc
.
CDC::EndPath
Cierra un corchete de trazado y selecciona el trazado definido por el corchete en el contexto de dispositivo.
BOOL EndPath();
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Ejemplo
Vea el ejemplo de CDC::BeginPath
.
CDC::EnumObjects
Enumera los lápices y pinceles disponibles en un contexto de dispositivo.
int EnumObjects(
int nObjectType,
int (CALLBACK* lpfn)(
LPVOID,
LPARAM),
LPARAM lpData);
Parámetros
nObjectType
Especifica el tipo de objeto. Puede tener los valores OBJ_BRUSH
o OBJ_PEN
.
lpfn
Es la dirección de instancia del procedimiento de la función de devolución de llamada proporcionada por la aplicación. Consulte más abajo la sección "Comentarios".
lpData
Apunta a los datos que proporciona la aplicación. Los datos se pasan a la función de devolución de llamada junto con la información del objeto.
Valor devuelto
Especifica el último valor devuelto por la función de devolución de llamada. Su significado está definido por el usuario.
Comentarios
Para cada objeto de un tipo determinado, se llama a la función de devolución de llamada que se pasa con la información de ese objeto. El sistema llama a la función de devolución de llamada hasta que no hay más objetos o la función de devolución de llamada devuelve 0.
Las nuevas características de Microsoft Visual C++ permiten usar una función ordinaria como función pasada a EnumObjects
. La dirección que se pasa a EnumObjects
es un puntero a una función exportada con EXPORT
y con la convención de llamada Pascal. En las aplicaciones en modo de protección, no es necesario crear esta función con la función de Windows MakeProcInstance
ni liberar la función después de usarla con la FreeProcInstance
función de Windows.
Tampoco es necesario exportar el nombre de la función en una EXPORTS
instrucción en el archivo de definición de módulo de la aplicación. En su lugar, puede usar el modificador de función EXPORT
, como en
int CALLBACK EXPORT AFunction (LPSTR, LPSTR);
para que el compilador emita el registro de exportación adecuado para la exportación por nombre sin alias. Esto funciona para la mayoría de las necesidades. En algunos casos especiales, como la exportación de una función por ordinal o mediante la creación de un alias para la exportación, sigue siendo necesario usar una instrucción EXPORTS
en un archivo de definición de módulo.
Para compilar programas de Microsoft Foundation, normalmente usará las /GA
opciones del compilador y /GEs
. La /Gw
opción del compilador no se usa con las clases de Microsoft Foundation. (Si usa la función MakeProcInstance
de Windows , deberá convertir explícitamente el puntero de función devuelto desde FARPROC
al tipo necesario en esta API). Las interfaces de registro de devolución de llamada ahora son seguras para tipos (debe pasar un puntero de función que apunte al tipo correcto de función para la devolución de llamada específica).
Además, todas las funciones de devolución de llamada deben interceptar las excepciones de Microsoft Foundation antes de volver a Windows, ya que las excepciones no se pueden producir a través de los límites de devolución de llamada. Para obtener más información sobre las excepciones, consulte el artículo Excepciones.
Ejemplo
// print some info about a pen we're ready to enumerate
BOOL CALLBACK EnumObjectHandler(LPVOID lpLogObject, LPARAM /* lpData */)
{
LOGPEN *pPen = (LOGPEN *)lpLogObject;
switch (pPen->lopnStyle)
{
case PS_SOLID:
TRACE0("PS_SOLID: ");
break;
case PS_DASH:
TRACE0("PS_DASH: ");
break;
case PS_DOT:
TRACE0("PS_DOT: ");
break;
case PS_DASHDOT:
TRACE0("PS_DASHDOT: ");
break;
case PS_DASHDOTDOT:
TRACE0("PS_DASHDOTDOT: ");
break;
case PS_NULL:
TRACE0("PS_NULL: ");
break;
case PS_INSIDEFRAME:
TRACE0("PS_INSIDEFRAME:");
break;
default:
TRACE0("unk style:");
}
TRACE2("Color: 0x%8.8X, Width: %d\n", pPen->lopnColor, pPen->lopnWidth);
return TRUE;
}
// get the default printer and enumerate the pens it has
void CDCView::OnEnumPens()
{
CPrintDialog dlg(FALSE);
dlg.GetDefaults();
HDC hdc = dlg.GetPrinterDC();
if (hdc != NULL)
{
CDC dc;
dc.Attach(hdc);
VERIFY(dc.EnumObjects(OBJ_PEN, EnumObjectHandler, 0));
}
}
CDC::Escape
Esta función miembro está prácticamente obsoleta para la programación en Win32.
virtual int Escape(
int nEscape,
int nCount,
LPCSTR lpszInData,
LPVOID lpOutData);
int Escape(
int nEscape,
int nInputSize,
LPCSTR lpszInputData,
int nOutputSize,
LPSTR lpszOutputData);
Parámetros
nEscape
Especifica la función de escape que se va a realizar.
Para obtener una lista completa de las funciones de escape, consulte Escape
en Windows SDK.
nCount
Especifica el número de bytes de los datos a los que apunta lpszInData
.
lpszInData
Apunta a la estructura de datos de entrada necesaria para este escape.
lpOutData
Apunta a la estructura que va a recibir la salida de este escape. El parámetro lpOutData
es NULL
si no se devuelven datos.
nInputSize
Especifica el número de bytes de los datos a los que apunta el parámetro lpszInputData
.
lpszInputData
Apunta a la estructura de entrada necesaria para el escape especificado.
nOutputSize
Especifica el número de bytes de los datos a los que apunta el parámetro lpszOutputData
.
lpszOutputData
Apunta a la estructura que recibe la salida de este escape. Este parámetro debe ser NULL
si no se devuelve ningún dato.
Valor devuelto
Se devuelve un valor positivo si la función se realiza correctamente, excepto para el escape QUERYESCSUPPORT
, que solo comprueba la implementación. Se devuelve cero si no se implementa el escape. Se devuelve un valor negativo si se ha producido un error. A continuación se muestran valores de error comunes:
SP_ERROR
: error general.SP_OUTOFDISK
: no hay suficiente espacio en disco disponible actualmente para la cola y no habrá más espacio disponible.SP_OUTOFMEMORY
: no hay suficiente memoria disponible para la cola.SP_USERABORT
: el usuario finalizó el trabajo con el Administrador de impresión.
Comentarios
De los escapes de impresora originales, solo se admite QUERYESCSUPPORT
para las aplicaciones Win32. Todos los demás escapes de impresora están obsoletos y solo se admiten por compatibilidad con aplicaciones de 16 bits.
Para la programación en Win32, CDC
ahora proporciona seis funciones miembro que reemplazan sus escapes de impresora correspondientes:
Además, CDC::GetDeviceCaps
admite índices Win32 que sustituyen a otros escapes de impresora. Para obtener más información, consulte el método GetDeviceCaps
en Windows SDK.
Esta función miembro permite a las aplicaciones acceder a las instalaciones de un dispositivo determinado que no están directamente disponibles a través de GDI.
Use la primera versión si la aplicación usa valores de escape predefinidos. Use la segunda versión si la aplicación define valores de escape privados. Consulte ExtEscape
en Windows SDK para obtener más información sobre la segunda versión.
CDC::ExcludeClipRect
Crea una zona de recorte que consta de la zona de recorte existente menos el rectángulo especificado.
int ExcludeClipRect(
int x1,
int y1,
int x2,
int y2);
int ExcludeClipRect(LPCRECT lpRect);
Parámetros
x1
Especifica la coordenada x lógica de la esquina superior izquierda del rectángulo.
y1
Especifica la coordenada y lógica de la esquina superior izquierda del rectángulo.
x2
Especifica la coordenada x lógica de la esquina inferior derecha del rectángulo.
y2
Especifica la coordenada y lógica de la esquina inferior derecha del rectángulo.
lpRect
Especifica el rectángulo. También puede ser un objeto CRect
.
Valor devuelto
Especifica el tipo de la nueva zona de recorte. Puede ser cualquiera de los siguientes valores:
COMPLEXREGION
: la región tiene bordes superpuestos.ERROR
: no se ha creado ninguna región.NULLREGION
La región está vacía.SIMPLEREGION
: la región no tiene bordes superpuestos.
Comentarios
El ancho del rectángulo, especificado por el valor absoluto de x2
- x1
, no debe superar las 32 767 unidades. Este límite también se aplica al alto del rectángulo.
CDC::ExcludeUpdateRgn
Impide dibujar dentro de áreas no válidas de una ventana al excluir una región actualizada de la ventana de la zona de recorte asociada al objeto CDC
.
int ExcludeUpdateRgn(CWnd* pWnd);
Parámetros
pWnd
Apunta al objeto de ventana cuya ventana se está actualizando.
Valor devuelto
El tipo de región excluida. Puede tener cualquiera de los valores siguientes:
COMPLEXREGION
: la región tiene bordes superpuestos.ERROR
: no se ha creado ninguna región.NULLREGION
La región está vacía.SIMPLEREGION
: la región no tiene bordes superpuestos.
CDC::ExtFloodFill
Rellena un área de la superficie de visualización con el pincel actual.
BOOL ExtFloodFill(
int x,
int y,
COLORREF crColor,
UINT nFillType);
Parámetros
x
Especifica la coordenada x lógica del punto donde comienza el relleno.
y
Especifica la coordenada y lógica del punto donde comienza el relleno.
crColor
Especifica el color del límite o del área que se va a rellenar. La interpretación de crColor
depende del valor de nFillType
.
nFillType
Especifica el tipo de relleno que se va a realizar. Debe tener uno de los valores siguientes:
FLOODFILLBORDER
: el área de relleno está limitada por el color especificado porcrColor
. Este estilo es idéntico al relleno que realizaFloodFill
.FLOODFILLSURFACE
: el área de relleno está definida por el color especificado porcrColor
. El relleno continúa hacia afuera en todas las direcciones, siempre y cuando se encuentre el color. Este estilo es útil para rellenar áreas con límites multicolor.
Valor devuelto
Distinto de cero si la función es correcta; De lo contrario, 0 si no se pudo completar el relleno, si el punto dado tiene el color de límite especificado por crColor
(si FLOODFILLBORDER
se solicitó), si el punto dado no tiene el color especificado por crColor
(si FLOODFILLSURFACE
se solicitó) o si el punto está fuera de la región de recorte.
Comentarios
Esta función miembro ofrece más flexibilidad que FloodFill
porque se puede especificar un tipo de relleno en nFillType
.
Si nFillType
se establece en FLOODFILLBORDER
, se supone que el área está completamente limitada por el color especificado por crColor
. La función comienza en el punto especificado por x
y y
rellena en todas las direcciones hasta el límite de color.
Si nFillType
se establece en FLOODFILLSURFACE
, la función comienza en el punto especificado por x
y y
y continúa en todas las direcciones, rellenando todas las áreas adyacentes que contienen el color especificado por crColor
.
Solo los contextos de dispositivo de memoria y los dispositivos que admiten la tecnología de visualización de trama admiten ExtFloodFill
. Para obtener más información, consulte la función miembro GetDeviceCaps
.
CDC::ExtTextOut
Llame a esta función miembro para escribir una cadena de caracteres dentro de una región rectangular mediante la fuente seleccionada actualmente.
virtual BOOL ExtTextOut(
int x,
int y,
UINT nOptions,
LPCRECT lpRect,
LPCTSTR lpszString,
UINT nCount,
LPINT lpDxWidths);
BOOL ExtTextOut(
int x,
int y,
UINT nOptions,
LPCRECT lpRect,
const CString& str,
LPINT lpDxWidths);
Parámetros
x
Especifica la coordenada x lógica de la celda de caracteres para el primer carácter de la cadena especificada.
y
Especifica la coordenada y lógica de la parte superior de la celda de caracteres para el primer carácter de la cadena especificada.
nOptions
Especifica el tipo de rectángulo. Este parámetro puede ser uno de los valores siguientes, ambos o ninguno:
ETO_CLIPPED
: especifica que el texto se recorta en el rectángulo.ETO_OPAQUE
: especifica que el color de fondo actual rellena el rectángulo. (Puede establecer y consultar el color de fondo actual con las funciones miembroSetBkColor
yGetBkColor
).
lpRect
Apunta a una estructura RECT
que determina las dimensiones del rectángulo. Este parámetro puede ser NULL
. También puede pasar un objeto CRect
para este parámetro.
lpszString
Apunta a la cadena de caracteres especificada que se va a dibujar. También puede pasar un objeto CString
para este parámetro.
nCount
Especifica el número de caracteres de la cadena.
lpDxWidths
Apunta a una matriz de valores que indican la distancia entre los orígenes de celdas de caracteres adyacentes. Por ejemplo, las unidades lógicas lpDxWidths
[i
] separarán los orígenes de la celda de caracteres i
y la celda de caracteres i
+ 1. Si lpDxWidths
es NULL
, ExtTextOut
usa el espaciado predeterminado entre caracteres.
str
Objeto CString
que contiene los caracteres especificados que se van a dibujar.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
La región rectangular puede ser opaca (rellenada con el color de fondo actual) y puede ser una zona de recorte.
Si nOptions
es 0 y lpRect
es NULL
, la función escribe texto en el contexto del dispositivo sin usar una región rectangular. De forma predeterminada, la función no usa ni actualiza la posición actual. Si una aplicación necesita actualizar la posición actual cuando llama a ExtTextOut
, la aplicación puede llamar a la función miembro CDC
SetTextAlign
con nFlags
establecido en TA_UPDATECP
. Cuando se establece esta marca, Windows pasa por alto los parámetros x
e y
en las llamadas posteriores a ExtTextOut
y usa la posición actual en su lugar. Cuando una aplicación usa TA_UPDATECP
para actualizar la posición actual, ExtTextOut
establece la posición actual al final de la línea de texto anterior o en la posición especificada por el último elemento de la matriz a la que apunta lpDxWidths
, lo que sea mayor.
CDC::FillPath
Cierra cualquier figura abierta del trazado actual y rellena el interior del trazado mediante el pincel actual y el modo de relleno de polígonos.
BOOL FillPath();
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
Una vez que se ha rellenado su interior, el trazado se descarta del contexto de dispositivo.
CDC::FillRect
Llame a esta función miembro para rellenar un rectángulo determinado mediante el pincel especificado.
void FillRect(
LPCRECT lpRect,
CBrush* pBrush);
Parámetros
lpRect
Apunta a una estructura RECT
que contiene las coordenadas lógicas del rectángulo que se va a rellenar. También puede pasar un objeto CRect
para este parámetro.
pBrush
Identifica el pincel que se ha usado para rellenar el rectángulo.
Comentarios
La función rellena el rectángulo completo, incluidos los bordes izquierdo y superior, pero no rellena los bordes derecho e inferior.
El pincel debe crearse mediante las funciones miembro de CBrush
CreateHatchBrush
, CreatePatternBrush
y CreateSolidBrush
, o recuperarse mediante la función de Windows GetStockObject
.
Al rellenar el rectángulo especificado, FillRect
no incluye los lados derecho e inferior del rectángulo. GDI rellena un rectángulo hasta, pero no incluye, la columna derecha y la fila inferior, independientemente del modo de asignación actual. FillRect
compara los valores de los miembros top
, bottom
, left
y right
del rectángulo especificado. Si bottom
es menor o igual que top
, o si right
es menor o igual que left
, el rectángulo no se dibuja.
FillRect
es similar a CDC::FillSolidRect
. Aun así, FillRect
toma un pincel y, por lo tanto, se puede usar para rellenar un rectángulo con un color sólido, un color interpolado, pinceles sombreados o un patrón. FillSolidRect
usa solo colores sólidos (indicados por un parámetro COLORREF
). FillRect
normalmente es más lento que FillSolidRect
.
CDC::FillRgn
Rellena la región especificada por pRgn
con el pincel especificado por pBrush
.
BOOL FillRgn(
CRgn* pRgn,
CBrush* pBrush);
Parámetros
pRgn
Puntero a la región que se va a rellenar. Las coordenadas de la región dada se especifican en unidades lógicas.
pBrush
Identifica el pincel que se va a usar para rellenar la región.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
El pincel debe crearse con las funciones miembro de CBrush
CreateHatchBrush
, CreatePatternBrush
o CreateSolidBrush
, o recuperarse mediante GetStockObject
.
Ejemplo
Vea el ejemplo de CRgn::CreateRoundRectRgn
.
CDC::FillSolidRect
Llame a esta función miembro para rellenar el rectángulo especificado con el color sólido especificado.
void FillSolidRect(
LPCRECT lpRect,
COLORREF clr);
void FillSolidRect(
int x,
int y,
int cx,
int cy,
COLORREF clr);
Parámetros
lpRect
Especifica el rectángulo delimitador (en unidades lógicas). Puede pasar un puntero a una estructura de datos RECT
o a un objeto CRect
para este parámetro.
clr
: especifica el color que se va a usar para rellenar el rectángulo.
x
Especifica la coordenada x lógica de la esquina superior izquierda del rectángulo.
y
Especifica la coordenada y lógica de la esquina superior izquierda del rectángulo de destino.
cx
Especifica el ancho del rectángulo.
cy
Especifica el alto del rectángulo.
Comentarios
FillSolidRect
es muy similar a CDC::FillRect
. Aun así, FillSolidRect
solo usa colores sólidos (indicados por el parámetro COLORREF
), mientras que FillRect
toma un pincel y, por lo tanto, se puede usar para rellenar un rectángulo con un color sólido, un color interpolado, pinceles sombreados o un patrón. FillSolidRect
normalmente es más rápido que FillRect
.
Nota:
Cuando se llama a FillSolidRect
, el color de fondo (que se estableció anteriormente mediante SetBkColor
) se establece en el color indicado por clr
.
CDC::FlattenPath
Transforma las curvas del trazado seleccionado en el contexto de dispositivo actual y convierte cada curva en una secuencia de líneas.
BOOL FlattenPath();
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
CDC::FloodFill
Rellena un área de la superficie de visualización con el pincel actual.
BOOL FloodFill(
int x,
int y,
COLORREF crColor);
Parámetros
x
Especifica la coordenada x lógica del punto donde comienza el relleno.
y
Especifica la coordenada y lógica del punto donde comienza el relleno.
crColor
Especifica el color del límite.
Valor devuelto
Distinto de cero si la función es correcta; De lo contrario, se devuelve 0 si no se pudo completar el relleno, el punto dado tiene el color de límite especificado por crColor
o el punto está fuera de la región de recorte.
Comentarios
Se supone que el área está limitada según lo especificado por crColor
. La función FloodFill
comienza en el punto especificado por x
y y
continúa en todas las direcciones hasta el límite de color.
Solo los contextos de dispositivo de memoria y los dispositivos que admiten la tecnología de visualización de trama admiten la función miembro FloodFill
. Para obtener información sobre la funcionalidad RC_BITBLT
, consulte la función miembro GetDeviceCaps
.
La función ExtFloodFill
proporciona una funcionalidad similar, pero mayor flexibilidad.
CDC::FrameRect
Dibuja un borde alrededor del rectángulo especificado por lpRect
.
void FrameRect(
LPCRECT lpRect,
CBrush* pBrush);
Parámetros
lpRect
Apunta a una estructura RECT
o un objeto CRect
que contiene las coordenadas lógicas de la esquina superior izquierda e inferior derecha del rectángulo. También puede pasar un objeto CRect
para este parámetro.
pBrush
Identifica el pincel que se va a usar para enmarcar el rectángulo.
Comentarios
La función usa el pincel especificado para dibujar el borde. El ancho y el alto del borde son siempre una unidad lógica.
Si la coordenada del bottom
rectángulo es menor o igual que top
, o si right
es menor o igual que left
, el rectángulo no se dibuja.
El borde dibujado por FrameRect
está en la misma posición que un borde dibujado por la función miembro Rectangle
con las mismas coordenadas (si Rectangle
usa un lápiz que tiene de ancho una unidad lógica). El interior del rectángulo no se rellena mediante FrameRect
.
CDC::FrameRgn
Dibuja un borde alrededor de la región especificada mediante el pincel pRgn
especificado por pBrush
.
BOOL FrameRgn(
CRgn* pRgn,
CBrush* pBrush,
int nWidth,
int nHeight);
Parámetros
pRgn
Apunta al objeto CRgn
que identifica la región que se va a incluir en un borde. Las coordenadas de la región dada se especifican en unidades lógicas.
pBrush
Apunta al objeto CBrush
que identifica el pincel que se va a usar para dibujar el borde.
nWidth
Especifica el ancho del borde en trazos de pincel verticales en unidades de dispositivo.
nHeight
Especifica el alto del borde en trazos de pincel horizontales en unidades de dispositivo.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Ejemplo
Vea el ejemplo de CRgn::CombineRgn
.
CDC::FromHandle
Devuelve un puntero a un objeto CDC
cuando se especifica un identificador de un contexto de dispositivo.
static CDC* PASCAL FromHandle(HDC hDC);
Parámetros
hDC
Contiene un identificador de un contexto de dispositivo de Windows.
Valor devuelto
El puntero puede ser temporal y no debe almacenarse más allá del uso inmediato.
Comentarios
Si un objeto CDC
no está asociado al identificador, se creará y asociará un objeto CDC
temporal.
Ejemplo
Vea el ejemplo de CPrintDialog::GetPrinterDC
.
CDC::GetArcDirection
Devuelve la dirección del arco actual para el contexto de dispositivo.
int GetArcDirection() const;
Valor devuelto
Especifica la dirección del arco actual, si se ejecuta correctamente. A continuación se muestran los valores devueltos válidos:
AD_COUNTERCLOCKWISE
: los arcos y los rectángulos se dibujan en sentido contrario a las agujas del reloj.AD_CLOCKWISE Arcs
: los arcos y los rectángulos se dibujan en el sentido de las agujas del reloj.
Si se produce un error, el valor devuelto es cero.
Comentarios
Las funciones de arco y rectángulo usan la dirección del arco.
CDC::GetAspectRatioFilter
Recupera la configuración del filtro de relación de aspecto actual.
CSize GetAspectRatioFilter() const;
Valor devuelto
Un objeto CSize
que representa la relación de aspecto usada por el filtro de relación de aspecto actual.
Comentarios
La relación de aspecto es la relación que forman el ancho y el alto de píxeles de un dispositivo. La información sobre la relación de aspecto de un dispositivo se usa en la creación, selección y visualización de fuentes. Windows proporciona un filtro especial (el filtro de relación de aspecto) para seleccionar fuentes diseñadas para una relación de aspecto determinada a partir de todas las fuentes disponibles. El filtro usa la relación de aspecto especificada por la función miembro SetMapperFlags
.
CDC::GetBkColor
Devuelve el color de fondo actual.
COLORREF GetBkColor() const;
Valor devuelto
Un valor de color RGB.
Comentarios
Si el modo de fondo es OPAQUE
, el sistema usa el color de fondo para rellenar los huecos en las líneas con estilo, los huecos entre las líneas sombreadas en pinceles y el fondo en las celdas de caracteres. El sistema también usa el color de fondo al convertir mapas de bits entre contextos de dispositivo monocromáticos y de color.
CDC::GetBkMode
Devuelve el modo de fondo.
int GetBkMode() const;
Valor devuelto
El modo de fondo actual, que puede ser OPAQUE
o TRANSPARENT
.
Comentarios
El modo de fondo define si el sistema quita los colores de fondo existentes en la superficie de dibujo antes de dibujar texto, pinceles sombreados o cualquier estilo de lápiz que no sea una línea sólida.
CDC::GetBoundsRect
Devuelve el rectángulo delimitador acumulado actual para el contexto de dispositivo especificado.
UINT GetBoundsRect(
LPRECT lpRectBounds,
UINT flags);
Parámetros
lpRectBounds
Apunta a un búfer que recibirá el rectángulo delimitador actual. El rectángulo se devuelve en coordenadas lógicas.
flags
Especifica si el rectángulo delimitador se va a borrar después de que se devuelva. Este parámetro debe ser cero o establecerse en el valor siguiente:
DCB_RESET
Obliga a borrar el rectángulo delimitador después de que se devuelva.
Valor devuelto
Especifica el estado actual del rectángulo delimitador si la función se realiza correctamente. Puede ser una combinación de los valores siguientes:
DCB_ACCUMULATE
: se está produciendo acumulación del rectángulo delimitador.DCB_RESET
: el rectángulo delimitador está vacío.DCB_SET
El rectángulo delimitador no está vacío.DCB_ENABLE
: la acumulación delimitadora está activada.DCB_DISABLE
: la acumulación delimitadora está desactivada.
CDC::GetBrushOrg
Recupera el origen (en unidades de dispositivo) del pincel seleccionado actualmente para el contexto de dispositivo.
CPoint GetBrushOrg() const;
Valor devuelto
El origen actual del pincel (en unidades de dispositivo) como un objeto CPoint
.
Comentarios
El origen inicial del pincel está en (0,0) del área cliente. El valor devuelto especifica este punto en unidades de dispositivo en relación con el origen de la ventana de escritorio.
CDC::GetCharacterPlacement
Recupera varios tipos de información sobre una cadena de caracteres.
DWORD GetCharacterPlacement(
LPCTSTR lpString,
int nCount,
int nMaxExtent,
LPGCP_RESULTS lpResults,
DWORD dwFlags) const;
DWORD GetCharacterPlacement(
CString& str,
int nMaxExtent,
LPGCP_RESULTS lpResults,
DWORD dwFlags) const;
Parámetros
lpString
Puntero a la cadena de caracteres que se va a procesar.
nCount
Especifica la longitud de la cadena. Para la versión ansi, es un BYTE
recuento y para la función Unicode es un WORD
recuento. Para obtener más información, vea GetCharacterPlacement
.
nMaxExtent
Especifica la extensión máxima (en unidades lógicas) con la que se procesa la cadena. Los caracteres que, en caso de procesarse, superarían esta extensión se omiten. Los cálculos de la ordenación necesaria o las matrices de glifos solo se aplican a los caracteres incluidos. Este parámetro solo se usa si el valor GCP_MAXEXTENT
se especifica en el parámetro dwFlags
. A medida que la función procesa la cadena de entrada, cada carácter y su extensión se agregan a la salida, la extensión y otras matrices solo si la extensión total aún no ha superado el máximo. Una vez que se haya alcanzado el límite, el procesamiento se detendrá.
lpResults
Puntero a una estructura GCP_Results
que recibe los resultados de la función.
dwFlags
Especifica cómo procesar la cadena en las matrices necesarias. Este parámetro puede ser uno o varios de los valores enumerados en la sección dwFlags
del tema GetCharacterPlacement
.
str
Puntero a un objeto CString
que se va a procesar.
Valor devuelto
Si la función se ejecuta correctamente, el valor devuelto es el ancho y el alto de la cadena en unidades lógicas.
Si la función no se realiza correctamente, el valor devuelto es cero.
Comentarios
Esta función miembro emula la funcionalidad de la función GetCharacterPlacement
, tal y como se describe en Windows SDK.
CDC::GetCharABCWidths
Recupera los anchos de caracteres consecutivos de un intervalo especificado de la fuente TrueType actual.
BOOL GetCharABCWidths(
UINT nFirstChar,
UINT nLastChar,
LPABC lpabc) const;
BOOL GetCharABCWidths(
UINT nFirstChar,
UINT nLastChar,
LPABCFLOAT lpABCF) const;
Parámetros
nFirstChar
Especifica el primer carácter del intervalo de caracteres de la fuente actual para la que se devuelven los anchos de caracteres.
nLastChar
Especifica el último carácter del intervalo de caracteres de la fuente actual para la que se devuelven los anchos de caracteres.
lpabc
Apunta a una matriz de estructuras ABC
que reciben los anchos de caracteres cuando se devuelve la función. Esta matriz debe contener al menos tantas estructuras ABC
como caracteres haya en el intervalo especificado por los parámetros nFirstChar
y nLastChar
.
lpABCF
Apunta a un búfer proporcionado por la aplicación con una matriz de estructuras ABCFLOAT
para recibir los anchos de caracteres cuando se devuelve la función. Los anchos que devuelve esta función están en el formato de punto flotante de IEEE.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
Los anchos se devuelven en unidades lógicas. Esta función solo se realiza correctamente con fuentes TrueType.
El rasterizador TrueType proporciona espaciado entre caracteres "ABC" después de seleccionar un tamaño de punto específico. El espaciado "A" es la distancia que se agrega a la posición actual antes de colocar el glifo. El espaciado "B" es el ancho de la parte negra del glifo. El espaciado "C" se agrega a la posición actual para tener en cuenta el espacio en blanco a la derecha del glifo. El ancho avanzado total se obtiene al sumar A + B + C.
Cuando la función miembro GetCharABCWidths
recupera anchos "A" o "C" negativos para un carácter, ese carácter incluye las partes entrantes o salientes.
Para convertir los anchos ABC en unidades de diseño de fuente, una aplicación debe crear una fuente cuyo alto (como se especifica en el miembro lfHeight
de la estructura LOGFONT
) sea igual al valor almacenado en el miembro ntmSizeEM
de la estructura NEWTEXTMETRIC
. (El valor del miembro ntmSizeEM
se puede recuperar mediante una llamada a la función EnumFontFamilies
de Windows).
Los anchos ABC del carácter predeterminado se usan para los caracteres que están fuera del intervalo de la fuente seleccionada actualmente.
Para recuperar los anchos de caracteres de fuentes que no son TrueType, las aplicaciones deben usar la función de Windows GetCharWidth
.
CDC::GetCharABCWidthsI
Recupera los anchos, en unidades lógicas, de índices de glifo consecutivos en un intervalo especificado de la fuente TrueType actual.
BOOL GetCharABCWidthsI(
UINT giFirst,
UINT cgi,
LPWORD pgi,
LPABC lpabc) const;
Parámetros
giFirst
Especifica el primer índice de glifos del grupo de índices de glifos consecutivos de la fuente actual. Este parámetro solo se usa si el parámetro pgi
es NULL
.
cgi
Especifica el número de índices de glifos.
pgi
Puntero a una matriz que contiene índices de glifos. Si el valor es NULL
, se usa en su lugar el parámetro giFirst
. El parámetro cgi
especifica el número de índices de glifos de esta matriz.
lpabc
Puntero a una matriz de estructuras ABC
que reciben los anchos de caracteres. Esta matriz debe contener al menos tantas estructuras ABC
como índices de glifos especifique el parámetro cgi
.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
Esta función miembro emula la funcionalidad de la función GetCharABCWidthsI
, tal y como se describe en Windows SDK.
CDC::GetCharWidth
Recupera los anchos de caracteres individuales de un grupo consecutivo de caracteres de la fuente actual mediante m_hAttribDC
, el contexto de dispositivo de entrada.
BOOL GetCharWidth(
UINT nFirstChar,
UINT nLastChar,
LPINT lpBuffer) const;
BOOL GetCharWidth(
UINT nFirstChar,
UINT nLastChar,
float* lpFloatBuffer) const;
Parámetros
nFirstChar
Especifica el primer carácter de un grupo consecutivo de caracteres en la fuente actual.
nLastChar
Especifica el último carácter de un grupo consecutivo de caracteres en la fuente actual.
lpBuffer
Apunta a un búfer que recibirá los valores de ancho de un grupo consecutivo de caracteres en la fuente actual.
lpFloatBuffer
Apunta a un búfer que recibirá los anchos de caracteres. Los anchos devueltos están en el formato de punto flotante de IEEE de 32 bits. (Los anchos se miden a lo largo de la línea base de los caracteres).
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
Por ejemplo, si nFirstChar
identifica la letra "a" y nLastChar
identifica la letra "z", la función recupera los anchos de todos los caracteres en minúsculas.
La función almacena los valores en el búfer al que apunta lpBuffer
. Este búfer debe ser lo suficientemente grande como para contener todos los anchos. Es decir, debe haber al menos 26 entradas en el ejemplo dado.
Si un carácter del grupo consecutivo de caracteres no existe en una fuente determinada, se le asignará el valor de ancho del carácter predeterminado.
CDC::GetCharWidthI
Recupera los anchos, en coordenadas lógicas, de índices de glifo consecutivos en un intervalo especificado de la fuente actual.
BOOL GetCharWidthI(
UINT giFirst,
UINT cgi,
LPWORD pgi,
LPINT lpBuffer) const;
Parámetros
giFirst
Especifica el primer índice de glifos del grupo de índices de glifos consecutivos de la fuente actual. Este parámetro solo se usa si el parámetro pgi
es NULL
.
cgi
Especifica el número de índices de glifos.
pgi
Puntero a una matriz que contiene índices de glifos. Si el valor es NULL
, se usa en su lugar el parámetro giFirst
. El parámetro cgi
especifica el número de índices de glifos de esta matriz.
lpBuffer
Puntero a un búfer que recibe los anchos.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
Esta función miembro emula la funcionalidad de la función GetCharWidthI
, tal y como se describe en Windows SDK.
CDC::GetClipBox
Recupera las dimensiones del rectángulo delimitador más estrecho alrededor del límite de recorte actual.
virtual int GetClipBox(LPRECT lpRect) const;
Parámetros
lpRect
Apunta a la estructura RECT
o el objeto CRect
que va a recibir las dimensiones del rectángulo.
Valor devuelto
El tipo de la zona de recorte. Puede ser cualquiera de los siguientes valores:
COMPLEXREGION
: la zona de recorte tiene bordes superpuestos.ERROR
El contexto del dispositivo no es válido.NULLREGION
: la zona de recorte está vacía.SIMPLEREGION
: la zona de recorte no tiene bordes superpuestos.
Comentarios
Las dimensiones se copian en el búfer al que apunta lpRect
.
CDC::GetColorAdjustment
Recupera los valores de ajuste de color para el contexto de dispositivo.
BOOL GetColorAdjustment(LPCOLORADJUSTMENT lpColorAdjust) const;
Parámetros
lpColorAdjust
Apunta a una estructura de datos COLORADJUSTMENT
para recibir los valores de ajuste de color.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
CDC::GetCurrentBitmap
Devuelve un puntero al objeto CBitmap
seleccionado actualmente.
CBitmap* GetCurrentBitmap() const;
Valor devuelto
Un puntero a un objeto CBitmap
si se realiza correctamente; de lo contrario, NULL
.
Comentarios
Esta función miembro podría devolver objetos temporales.
CDC::GetCurrentBrush
Devuelve un puntero al objeto CBrush
seleccionado actualmente.
CBrush* GetCurrentBrush() const;
Valor devuelto
Un puntero a un objeto CBrush
si se realiza correctamente; de lo contrario, NULL
.
Comentarios
Esta función miembro podría devolver objetos temporales.
CDC::GetCurrentFont
Devuelve un puntero al objeto CFont
seleccionado actualmente.
CFont* GetCurrentFont() const;
Valor devuelto
Un puntero a un objeto CFont
si se realiza correctamente; de lo contrario, NULL
.
Comentarios
Esta función miembro podría devolver objetos temporales.
CDC::GetCurrentPalette
Devuelve un puntero al objeto CPalette
seleccionado actualmente.
CPalette* GetCurrentPalette() const;
Valor devuelto
Un puntero a un objeto CPalette
si se realiza correctamente; de lo contrario, NULL
.
Comentarios
Esta función miembro podría devolver objetos temporales.
CDC::GetCurrentPen
Devuelve un puntero al objeto CPen
seleccionado actualmente.
CPen* GetCurrentPen() const;
Valor devuelto
Un puntero a un objeto CPen
si se realiza correctamente; de lo contrario, NULL
.
Comentarios
Esta función miembro podría devolver objetos temporales.
CDC::GetCurrentPosition
Recupera la posición actual (en coordenadas lógicas).
CPoint GetCurrentPosition() const;
Valor devuelto
La posición actual como un objeto CPoint
.
Comentarios
La posición actual se puede establecer con la función miembro MoveTo
.
CDC::GetDCBrushColor
Recupera el color de pincel actual.
COLORREF GetDCBrushColor() const;
Valor devuelto
Si la función se realiza correctamente, el valor devuelto es el valor COLORREF
del color de pincel actual.
Si la función produce un error, el valor devuelto es CLR_INVALID
.
Comentarios
Esta función miembro emula la funcionalidad de la función GetDCBrushColor
, tal y como se describe en Windows SDK.
CDC::GetDCPenColor
Recupera el color del lápiz actual.
COLORREF GetDCPenColor() const;
Valor devuelto
Si la función se realiza correctamente, el valor devuelto es el valor COLORREF
del color de lápiz actual.
Si la función produce un error, el valor devuelto es CLR_INVALID
.
Comentarios
Esta función miembro usa la función GetDCPenColor
de Win32, como se describe en Windows SDK.
CDC::GetDeviceCaps
Recupera una amplia gama de información específica del dispositivo sobre el dispositivo de visualización.
int GetDeviceCaps(int nIndex) const;
Parámetros
nIndex
Especifica el tipo de información que se va a devolver. Para una lista de valores, consulte GetDeviceCaps
en Windows SDK.
Valor devuelto
El valor de la funcionalidad solicitada si la función se realiza correctamente.
Ejemplo
Vea el ejemplo de CPrintDialog::GetDefaults
.
CDC::GetFontData
Recupera información de métricas de fuente de un archivo de fuente escalable.
DWORD GetFontData(
DWORD dwTable,
DWORD dwOffset,
LPVOID lpData,
DWORD cbData) const;
Parámetros
dwTable
Especifica el nombre de la tabla de métricas que se va a devolver. Este parámetro puede ser una de las tablas de métricas documentadas en la especificación de archivos de fuente TrueType publicada por Microsoft Corporation. Si este parámetro es 0, la información se recupera desde el principio del archivo de fuente.
dwOffset
Especifica el desplazamiento desde el principio de la tabla en la que se va a empezar a recuperar información. Si este parámetro es 0, la información se recupera desde el principio de la tabla especificada por el parámetro dwTable
. Si este valor es mayor o igual que el tamaño de la tabla, GetFontData
devuelve 0.
lpData
Apunta a un búfer que recibirá la información de fuente. Si este valor es NULL
, la función devuelve el tamaño del búfer necesario para los datos de fuente especificados en el parámetro dwTable
.
cbData
Especifica la longitud en bytes de la información que se recuperará. Si este parámetro es 0, GetFontData
devuelve el tamaño de los datos especificados en el parámetro dwTable
.
Valor devuelto
Especifica el número de bytes devueltos en el búfer al que apunta lpData
si la función se realiza correctamente; en caso contrario, -1.
Comentarios
Para identificar qué información se va a recuperar, se especifica un desplazamiento en el archivo de fuente y la longitud de la información que se devolverá.
Una aplicación a veces puede usar la función miembro GetFontData
para guardar una fuente TrueType con un documento. Para ello, la aplicación determina si la fuente se puede insertar, recupera todo el archivo de fuente y especifica 0 para los parámetros dwTable
, dwOffset
y cbData
.
Las aplicaciones pueden determinar si una fuente se puede insertar. Para ello, comprueban el miembro otmfsType
de la estructura OUTLINETEXTMETRIC
. Si se establece el bit 1 de otmfsType
, no se permite insertar para la fuente. Si el bit 1 está desactivado, la fuente se puede insertar. Si se establece el bit 2, la inserción es de solo lectura.
Si una aplicación intenta usar esta función para recuperar información de una fuente que no es TrueType, la función miembro GetFontData
devuelve -1.
CDC::GetFontLanguageInfo
Devuelve información sobre la fuente seleccionada actualmente para el contexto de visualización especificado.
DWORD GetFontLanguageInfo() const;
Valor devuelto
El valor devuelto identifica las características de la fuente seleccionada actualmente. Para obtener una lista completa de valores posibles, consulte GetFontLanguageInfo
.
Comentarios
Esta función miembro emula la funcionalidad de la función GetFontLanguageInfo
, tal y como se describe en Windows SDK.
CDC::GetGlyphOutline
Recupera la curva de contorno o el mapa de bits de un carácter de contorno en la fuente actual.
DWORD GetGlyphOutline(
UINT nChar,
UINT nFormat,
LPGLYPHMETRICS lpgm,
DWORD cbBuffer,
LPVOID lpBuffer,
const MAT2* lpmat2) const;
Parámetros
nChar
Especifica el carácter para el que se va a devolver información.
nFormat
Especifica el formato en el que la función va a devolver información. Puede ser uno de los valores siguientes o 0:
Valor | Significado |
---|---|
GGO_BITMAP |
Devuelve el mapa de bits del glifo. Cuando se devuelve la función, el búfer al que apunta lpBuffer contiene un mapa de bits de 1 bit por píxel cuyas filas comienzan en límites de doble palabra. |
GGO_NATIVE |
Devuelve los puntos de datos de curva en el formato nativo del rasterizador mediante unidades de dispositivo. Cuando se especifica este valor, se omite cualquier transformación especificada en lpmat2 . |
Cuando el valor de nFormat
es 0, la función rellena una GLYPHMETRICS
estructura, pero no devuelve datos de esquema de glifo.
lpgm
Apunta a una estructura GLYPHMETRICS
que describe la colocación del glifo en la celda de caracteres.
cbBuffer
Especifica el tamaño del búfer en el que la función copia información sobre el carácter de contorno. Si este valor es 0 y el parámetro nFormat
es el valor GGO_BITMAP
o GGO_NATIVE
, la función devuelve el tamaño necesario del búfer.
lpBuffer
Apunta a un búfer en el que la función copia información sobre el carácter de contorno. Si nFormat
especifica el valor GGO_NATIVE
, la información se copia en forma de estructuras TTPOLYGONHEADER
y TTPOLYCURVE
. Si este valor es NULL
y nFormat
es el valor GGO_BITMAP
o GGO_NATIVE
, la función devuelve el tamaño necesario del búfer.
lpmat2
Apunta a una estructura MAT2
que contiene una matriz de transformación para el carácter. Este parámetro no puede ser NULL
, incluso cuando se especifica el valor GGO_NATIVE
para nFormat
.
Valor devuelto
El tamaño en bytes del búfer necesario para la información recuperada si cbBuffer
es 0 o lpBuffer
es NULL
. De lo contrario, es un valor positivo si la función se realiza correctamente o -1 si se produce un error.
Comentarios
Una aplicación puede girar los caracteres recuperados en formato de mapa de bits. Para ello, especifica una matriz de transformación de 2 por 2 en la estructura a la que apunta lpmat2
.
El contorno de un glifo se devuelve como una serie de contornos. Cada contorno se define mediante una estructura TTPOLYGONHEADER
seguida de tantas estructuras TTPOLYCURVE
como sea necesario para describirla. Todos los puntos se devuelven como estructuras POINTFX
y representan posiciones absolutas, no movimientos relativos. El punto de partida proporcionado por el miembro pfxStart
de la estructura TTPOLYGONHEADER
es el punto en el que comienza un contorno. Las estructuras TTPOLYCURVE
siguientes pueden ser registros Polilínea o registros spline. Los registros Polilínea son una serie de puntos; las líneas dibujadas entre los puntos describen el contorno del carácter. Los registros spline representan las curvas cuadráticas que usa TrueType (es decir, B-splines cuadráticas).
CDC::GetGraphicsMode
Recupera el modo gráfico actual para el contexto de dispositivo especificado.
int GetGraphicsMode() const;
Valor devuelto
Devuelve el modo gráfico actual si se ejecuta correctamente. Para obtener una lista de los valores que este método puede devolver, consulte GetGraphicsMode
.
Devuelve 0 en caso de error.
Para obtener información de errores extendida, realice una llamada a GetLastError
.
Comentarios
Este método encapsula la función GDI de Windows GetGraphicsMode
.
CDC::GetHalftoneBrush
Llame a esta función miembro para recuperar un pincel de semitonos.
static CBrush* PASCAL GetHalftoneBrush();
Valor devuelto
Un puntero a un objeto CBrush
si se realiza correctamente; de lo contrario, NULL
.
Comentarios
Un pincel de semitonos muestra píxeles que son alternativamente colores de primer plano y de fondo para crear un patrón interpolado. En el diagrama siguiente se muestra un ejemplo de un patrón dithered creado por un pincel de medio tono:
En el diagrama se muestra cómo el color de fondo de negro y el color de primer plano de amarillo se combinan en un patrón alternando los píxeles negros y amarillos entre sí para crear un trazo de lápiz dithered.
CDC::GetKerningPairs
Recupera los pares de interletraje de caracteres para la fuente seleccionada actualmente en el contexto de dispositivo especificado.
int GetKerningPairs(
int nPairs,
LPKERNINGPAIR lpkrnpair) const;
Parámetros
nPairs
Especifica el número de estructuras KERNINGPAIR
a las que apunta lpkrnpair
. La función no copiará más pares de kerning de los especificados por nPairs
.
lpkrnpair
Apunta a una matriz de estructuras KERNINGPAIR
que reciben los pares de interletraje cuando se devuelve la función. Esta matriz debe contener al menos tantas estructuras como especifique nPairs
. Si este parámetro es NULL
, la función devuelve el número total de pares de interletraje para la fuente.
Valor devuelto
Especifica el número de pares de interletraje recuperados o el número total de pares de interletraje de la fuente, si la función se realiza correctamente. Se devuelve cero si se produce un error en la función o no hay pares de interletraje para la fuente.
CDC::GetLayout
Llame a esta función miembro para determinar el diseño del texto y los gráficos de un contexto de dispositivo, como una impresora o un metarchivo.
DWORD GetLayout() const;
Valor devuelto
Si se ejecuta correctamente, las marcas de diseño del contexto de dispositivo actual. En caso contrario, es GDI_ERROR
. Para obtener información de error extendida, llame a GetLastError
. Para ver una lista de las marcas de diseño, consulte CDC::SetLayout
.
Comentarios
El diseño predeterminado es de izquierda a derecha.
CDC::GetMapMode
Recupera el modo de asignación actual.
int GetMapMode() const;
Valor devuelto
El modo de asignación.
Comentarios
Para obtener una descripción de los modos de asignación, consulte la función miembro SetMapMode
.
Nota:
Si llama a SetLayout
para cambiar el contexto de dispositivo a un diseño de derecha a izquierda, SetLayout
cambia automáticamente el modo de asignación a MM_ISOTROPIC
. Por consiguiente, cualquier llamada posterior a GetMapMode
devolverá MM_ISOTROPIC
.
CDC::GetMiterLimit
Devuelve el límite angular para el contexto de dispositivo.
float GetMiterLimit() const;
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
El límite angular se usa al dibujar líneas geométricas que tienen uniones angulares.
CDC::GetNearestColor
Devuelve el color sólido que coincide mejor con un color lógico especificado.
COLORREF GetNearestColor(COLORREF crColor) const;
Parámetros
crColor
Especifica el color con el que se va a establecer la coincidencia.
Valor devuelto
Un valor de color RGB (rojo, verde, azul) que define el color sólido más cercano al valor crColor
que el dispositivo puede representar.
Comentarios
El dispositivo especificado debe ser capaz de representar este color.
CDC::GetOutlineTextMetrics
Recupera información de métricas para fuentes TrueType.
UINT GetOutlineTextMetrics(
UINT cbData,
LPOUTLINETEXTMETRIC lpotm) const;
Parámetros
lpotm
Apunta a una matriz de estructuras OUTLINETEXTMETRIC
. Si este parámetro es NULL
, la función devuelve el tamaño del búfer necesario para los datos de métricas recuperados.
cbData
Especifica el tamaño en bytes del búfer al que se devuelve información.
lpotm
Apunta a una estructura OUTLINETEXTMETRIC
. Si este parámetro es NULL
, la función devuelve el tamaño del búfer necesario para la información de métricas recuperada.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
La estructura OUTLINETEXTMETRIC
contiene la mayor parte de la información de métrica de fuente proporcionada con el formato TrueType, incluida una estructura TEXTMETRIC
. Los cuatro últimos miembros de la estructura OUTLINETEXTMETRIC
son punteros a cadenas. Las aplicaciones deben asignar espacio para estas cadenas, además del espacio necesario para los demás miembros. Dado que no hay ningún límite impuesto por el sistema al tamaño de las cadenas, el método más sencillo para asignar memoria es recuperar el tamaño necesario especificando NULL para lpotm
en la primera llamada a la GetOutlineTextMetrics
función.
CDC::GetOutputCharWidth
Usa el contexto de dispositivo de salida (m_hDC
) y recupera los anchos de caracteres individuales de un grupo consecutivo de caracteres de la fuente actual.
BOOL GetOutputCharWidth(
UINT nFirstChar,
UINT nLastChar,
LPINT lpBuffer) const;
Parámetros
nFirstChar
Especifica el primer carácter de un grupo consecutivo de caracteres en la fuente actual.
nLastChar
Especifica el último carácter de un grupo consecutivo de caracteres en la fuente actual.
lpBuffer
Apunta a un búfer que recibirá los valores de ancho de un grupo consecutivo de caracteres en la fuente actual.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
Por ejemplo, si nFirstChar
identifica la letra "a" y nLastChar
identifica la letra "z", la función recupera los anchos de todos los caracteres en minúsculas.
La función almacena los valores en el búfer al que apunta lpBuffer
. Este búfer debe ser lo suficientemente grande para contener todos los anchos; es decir, debe haber al menos 26 entradas en el ejemplo especificado.
Si un carácter del grupo consecutivo de caracteres no existe en una fuente determinada, se le asignará el valor de ancho del carácter predeterminado.
CDC::GetOutputTabbedTextExtent
Llame a esta función miembro para calcular el ancho y el alto de una cadena de caracteres mediante m_hDC
, el contexto de dispositivo de salida.
CSize GetOutputTabbedTextExtent(
LPCTSTR lpszString,
int nCount,
int nTabPositions,
LPINT lpnTabStopPositions) const;
CSize GetOutputTabbedTextExtent(
const CString& str,
int nTabPositions,
LPINT lpnTabStopPositions) const;
Parámetros
lpszString
Apunta a una cadena de caracteres que se va a medir. También puede pasar un objeto CString
para este parámetro.
nCount
Especifica la longitud de la cadena a la que apunta lpszString
.
nTabPositions
Especifica el número de posiciones de tabulación en la matriz a la que apunta lpnTabStopPositions
.
lpnTabStopPositions
Apunta a una matriz de enteros que contienen las posiciones de tabulación en unidades lógicas. Las tabulaciones deben ordenarse en orden creciente; el valor x más pequeño debe ser el primer elemento de la matriz. No se permiten pestañas posteriores.
str
Objeto CString
que contiene los caracteres especificados que se van a medir.
Valor devuelto
Las dimensiones de la cadena (en unidades lógicas) de un objeto CSize
.
Comentarios
Si la cadena contiene uno o varios caracteres de tabulación, el ancho de la cadena se basa en las tabulaciones que especifica lpnTabStopPositions
. La función usa la fuente seleccionada actualmente para calcular las dimensiones de la cadena.
La región de recorte actual no desplaza el ancho y el alto devueltos por la GetOutputTabbedTextExtent
función.
Dado que algunos dispositivos no colocan caracteres en matrices de celdas normales (es decir, a kern los caracteres), es posible que la suma de las extensiones de los caracteres de una cadena no sea igual a la extensión de la cadena.
Si nTabPositions
es 0 y lpnTabStopPositions
es NULL
, las tabulaciones se expanden ocho veces el ancho de carácter medio. Si nTabPositions
es 1, las tabulaciones se separarán con la distancia especificada por el primer valor de la matriz a la que apunta lpnTabStopPositions
. Si lpnTabStopPositions
apunta a más de un valor, se establece una tabulación para cada valor de la matriz, hasta el número especificado por nTabPositions
.
CDC::GetOutputTextExtent
Llame a esta función miembro para usar el contexto de dispositivo de salida (m_hDC
) y calcular el ancho y el alto de una línea de texto con la fuente actual.
CSize GetOutputTextExtent(
LPCTSTR lpszString,
int nCount) const;
CSize GetOutputTextExtent(const CString& str) const;
Parámetros
lpszString
Apunta a una cadena de caracteres. También puede pasar un objeto CString
para este parámetro.
nCount
Especifica la longitud de la cadena a la que apunta lpszString
.
str
Objeto CString
que contiene los caracteres especificados que se van a medir.
Valor devuelto
Las dimensiones de la cadena (en unidades lógicas) devuelta en un objeto CSize
.
Comentarios
La región de recorte actual no afecta al ancho y alto devuelto por GetOutputTextExtent
.
Dado que algunos dispositivos no colocan caracteres en matrices de celdas normales (es decir, llevan a cabo el kerning), es posible que la suma de las extensiones de los caracteres de una cadena no sea igual a la extensión de la cadena.
CDC::GetOutputTextMetrics
Recupera las métricas de la fuente actual mediante m_hDC
, el contexto de dispositivo de salida.
BOOL GetOutputTextMetrics(LPTEXTMETRIC lpMetrics) const;
Parámetros
lpMetrics
Apunta a la estructura TEXTMETRIC
que recibe las métricas.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
CDC::GetPath
Recupera las coordenadas que definen los extremos de líneas y los puntos de control de curvas que se encuentran en el trazado seleccionado en el contexto de dispositivo.
int GetPath(
LPPOINT lpPoints,
LPBYTE lpTypes,
int nCount) const;
Parámetros
lpPoints
Apunta a una matriz de estructuras de datos POINT
u objetos CPoint
donde se colocan los extremos de líneas y los puntos de control de curvas.
lpTypes
Apunta a una matriz de bytes donde se colocan los tipos de vértice. Los valores son uno de los siguientes:
PT_MOVETO
: especifica que el punto correspondiente delpPoints
inicia una figura no contigua.PT_LINETO
: especifica que el punto anterior y el punto correspondiente delpPoints
son los extremos de una línea.PT_BEZIERTO
: especifica que el punto correspondiente delpPoints
es un punto de control o un extremo de una curva Bézier.
PT_BEZIERTO
: los tipos siempre se producen en conjuntos de tres. El punto del trazado inmediatamente anterior a ellos define el punto inicial de la curva Bézier. Los dos primeros puntos PT_BEZIERTO
son los puntos de control y el tercer punto PT_BEZIERTO
es el punto final (si está codificado de forma rígida).
Un tipo PT_LINETO
o PT_BEZIERTO
puede combinarse con la marca siguiente (mediante el operador bit a bit OR) para indicar que el punto correspondiente es el último punto de una figura y que la figura debe cerrarse:
PT_CLOSEFIGURE
: especifica que la figura se cierra automáticamente después de dibujar la línea o curva correspondientes. Para cerrar la figura, se dibuja una línea desde el extremo de la línea o la curva hasta el punto correspondiente del últimoPT_MOVETO
.
nCount
Especifica el número total de estructuras de datos POINT
que se pueden colocar en la matriz lpPoints
. Este valor debe ser el mismo que el número de bytes que pueden colocarse en la matriz lpTypes
.
Valor devuelto
Si el parámetro nCount
es distinto de cero, el número de puntos enumerados. Si nCount
es 0, el número total de puntos del trazado (y GetPath
no escribe nada en los búferes). Si nCount
no es cero y es menor que el número de puntos del trazado, el valor devuelto es -1.
Comentarios
El contexto de dispositivo debe contener un trazado cerrado. Los puntos del trazado se devuelven en coordenadas lógicas. Los puntos se almacenan en el trazado en coordenadas del dispositivo, por lo que GetPath
cambia los puntos de coordenadas del dispositivo a las coordenadas lógicas mediante el uso del valor inverso de la transformación actual. Se puede llamar a la función miembro FlattenPath
antes de GetPath
, para convertir todas las curvas del trazado en segmentos de línea.
Ejemplo
Vea el ejemplo de CDC::BeginPath
.
CDC::GetPixel
Recupera el valor de color RGB del píxel en el punto especificado por x
e *y*
.
COLORREF GetPixel(
int x,
int y) const;
COLORREF GetPixel(POINT point) const;
Parámetros
x
Especifica la coordenada x lógica del punto que se va a examinar.
y
Especifica la coordenada y lógica del punto que se va a examinar.
point
Especifica las coordenadas x e y lógicas del punto que se va a examinar.
Valor devuelto
Para cualquiera de las versiones de la función, un valor de color RGB para el color del punto especificado. Es -1 si las coordenadas no especifican un punto en la región de recorte.
Comentarios
El punto debe estar en la zona de recorte. Si el punto no está en la región de recorte, la función no tiene ningún efecto y devuelve -1.
No todos los dispositivos admiten la función GetPixel
. Para obtener más información, consulte la funcionalidad de trama RC_BITBLT
en la función miembro GetDeviceCaps
.
La función miembro GetPixel
tiene dos formas. La primera toma dos valores de coordenadas; el segundo toma una estructura POINT
o un objeto CPoint
.
CDC::GetPolyFillMode
Recupera el modo actual de relleno de polígonos.
int GetPolyFillMode() const;
Valor devuelto
El modo de relleno de polígono actual (ALTERNATE
o WINDING
), si la función se realiza correctamente.
Comentarios
Consulte la función miembro SetPolyFillMode
para obtener una descripción de los modos de relleno de polígono.
CDC::GetROP2
Recupera el modo de dibujo actual.
int GetROP2() const;
Valor devuelto
El modo de dibujo. Para obtener una lista de los valores del modo de dibujo, consulte la función miembro SetROP2
.
Comentarios
El modo de dibujo especifica la forma en que los colores del lápiz y el interior de los objetos rellenados se combinan con el color que ya está en la superficie de visualización.
CDC::GetSafeHdc
Llame a esta función miembro para obtener m_hDC
, el contexto de dispositivo de salida.
HDC GetSafeHdc() const;
Valor devuelto
Un identificador del contexto de dispositivo.
Comentarios
Esta función miembro también funciona con punteros nulos.
CDC::GetStretchBltMode
Recupera el modo de extensión del mapa de bits actual.
int GetStretchBltMode() const;
Valor devuelto
El valor devuelto especifica el modo actual de extensión de mapa de bits (STRETCH_ANDSCANS
, STRETCH_DELETESCANS
o STRETCH_ORSCANS
) si la función se realiza correctamente.
Comentarios
El modo de extensión de mapa de bits define la manera en que la información se quita de los mapas de bits extendidos o comprimidos por la función miembro StretchBlt
.
Los modos STRETCH_ANDSCANS
y STRETCH_ORSCANS
se usan normalmente para conservar píxeles de primer plano en mapas de bits monocromáticos. El modo STRETCH_DELETESCANS
se usa normalmente para conservar el color en los mapas de bits de color.
CDC::GetTabbedTextExtent
Llame a esta función miembro para calcular el ancho y el alto de una cadena de caracteres mediante m_hAttribDC
, el contexto de dispositivo de atributo.
CSize GetTabbedTextExtent(
LPCTSTR lpszString,
int nCount,
int nTabPositions,
LPINT lpnTabStopPositions) const;
CSize GetTabbedTextExtent(
const CString& str,
int nTabPositions,
LPINT lpnTabStopPositions) const;
Parámetros
lpszString
Apunta a una cadena de caracteres. También puede pasar un objeto CString
para este parámetro.
nCount
Especifica la longitud de la cadena a la que apunta lpszString
.
nTabPositions
Especifica el número de posiciones de tabulación en la matriz a la que apunta lpnTabStopPositions
.
lpnTabStopPositions
Apunta a una matriz de enteros que contienen las posiciones de tabulación en unidades lógicas. Las tabulaciones deben ordenarse en orden creciente; el valor x más pequeño debe ser el primer elemento de la matriz. No se permiten pestañas posteriores.
str
Objeto CString
que contiene los caracteres especificados que se van a dibujar.
Valor devuelto
Las dimensiones de la cadena (en unidades lógicas) de un objeto CSize
.
Comentarios
Si la cadena contiene uno o varios caracteres de tabulación, el ancho de la cadena se basa en las tabulaciones que especifica lpnTabStopPositions
. La función usa la fuente seleccionada actualmente para calcular las dimensiones de la cadena.
La región de recorte actual no desplaza el ancho y el alto devueltos por la GetTabbedTextExtent
función.
Dado que algunos dispositivos no colocan caracteres en matrices de celdas normales (es decir, a kern los caracteres), es posible que la suma de las extensiones de los caracteres de una cadena no sea igual a la extensión de la cadena.
Si nTabPositions
es 0 y lpnTabStopPositions
es NULL
, las tabulaciones se expanden ocho veces el ancho de carácter medio. Si nTabPositions
es 1, las tabulaciones se separarán con la distancia especificada por el primer valor de la matriz a la que apunta lpnTabStopPositions
. Si lpnTabStopPositions
apunta a más de un valor, se establece una tabulación para cada valor de la matriz, hasta el número especificado por nTabPositions
.
CDC::GetTextAlign
Recupera el estado de las marcas de alineación del texto para el contexto de dispositivo.
UINT GetTextAlign() const;
Valor devuelto
El estado de las marcas de alineación del texto. El valor devuelto es uno o varios de los valores siguientes:
TA_BASELINE
: especifica la alineación del eje x y la línea base de la fuente elegida dentro del rectángulo delimitador.TA_BOTTOM
: especifica la alineación del eje x y la parte inferior del rectángulo delimitador.TA_CENTER
: especifica la alineación del eje y y el centro del rectángulo delimitador.TA_LEFT
: especifica la alineación del eje y y el lado izquierdo del rectángulo delimitador.TA_NOUPDATECP
Especifica que la posición actual no se actualiza.TA_RIGHT
: especifica la alineación del eje y y el lado derecho del rectángulo delimitador.TA_TOP
: especifica la alineación del eje x y la parte superior del rectángulo delimitador.TA_UPDATECP
: especifica que la posición actual se actualiza.
Comentarios
Las marcas de alineación del texto determinan la forma en que las funciones miembro TextOut
y ExtTextOut
alinean una cadena de texto en relación con el punto inicial de la cadena. Las marcas de alineación de texto no son necesariamente marcas de un solo bit y pueden ser iguales a 0. Para probar si se establece una marca, una aplicación debe seguir estos pasos:
Aplique el operador OR bit a bit (
|
) a la marca y sus marcas relacionadas, agrupadas como se indica a continuación:TA_LEFT
,TA_CENTER
yTA_RIGHT
TA_BASELINE
,TA_BOTTOM
yTA_TOP
TA_NOUPDATECP
yTA_UPDATECP
Aplique el operador AND bit a bit (
&
) de C++ al resultado y el valor devuelto deGetTextAlign
.Pruebe la igualdad de este resultado y la marca.
CDC::GetTextCharacterExtra
Recupera la configuración actual de la cantidad de espaciado entre caracteres.
int GetTextCharacterExtra() const;
Valor devuelto
La cantidad de espaciado entre caracteres.
Comentarios
GDI agrega este espaciado a cada carácter, incluidos los caracteres de salto, cuando escribe una línea de texto en el contexto de dispositivo.
El valor predeterminado de la cantidad de espaciado entre caracteres es 0.
CDC::GetTextColor
Recupera el color actual del texto.
COLORREF GetTextColor() const;
Valor devuelto
El color del texto actual como un valor de color RGB.
Comentarios
El color del texto es el color de primer plano de los caracteres dibujados mediante las funciones miembro de salida de texto de GDI TextOut
, ExtTextOut
y TabbedTextOut
.
CDC::GetTextExtent
Llame a esta función miembro para calcular el ancho y el alto de una línea de texto mediante la fuente actual para determinar las dimensiones.
CSize GetTextExtent(
LPCTSTR lpszString,
int nCount) const;
CSize GetTextExtent(const CString& str) const;
Parámetros
lpszString
Apunta a una cadena de caracteres. También puede pasar un objeto CString
para este parámetro.
nCount
Especifica el número de caracteres de la cadena.
str
Objeto CString
que contiene los caracteres especificados.
Valor devuelto
Las dimensiones de la cadena (en unidades lógicas) de un objeto CSize
.
Comentarios
La información se recupera de m_hAttribDC
, el contexto de dispositivo de atributo.
De forma predeterminada, GetTextExtent
da por supuesto que el texto para el que recupera la dimensión se establece a lo largo de una línea horizontal (es decir, el escape es 0). Si crea una fuente que especifica un escape distinto de cero, debe convertir el ángulo del texto explícitamente para obtener las dimensiones de la cadena.
La región de recorte actual no afecta al ancho y alto devuelto por GetTextExtent
.
Dado que algunos dispositivos no colocan caracteres en matrices de celdas normales (es decir, llevan a cabo el kerning), es posible que la suma de las extensiones de los caracteres de una cadena no sea igual a la extensión de la cadena.
CDC::GetTextExtentExPointI
Recupera el número de caracteres de una cadena especificada que cabrá en un espacio determinado y rellena una matriz con la extensión de texto para cada uno de esos caracteres.
BOOL GetTextExtentExPointI(
LPWORD pgiIn,
int cgi,
int nMaxExtent,
LPINT lpnFit,
LPINT alpDx,
LPSIZE lpSize) const;
Parámetros
pgiIn
Puntero a una matriz de índices de glifo para la que se van a recuperar extensiones.
cgi
Especifica el número de glifos de la matriz a la que apunta pgiIn
.
nMaxExtent
Especifica el ancho máximo permitido, en unidades lógicas, de la cadena con formato.
lpnFit
Puntero a un entero que recibe un recuento del número máximo de caracteres que cabrán en el espacio especificado por nMaxExtent
. Cuando lpnFit
es NULL
, nMaxExtent
se omite.
alpDx
Puntero a una matriz de enteros que recibe extensiones de glifos parciales. Cada elemento de la matriz proporciona la distancia, en unidades lógicas, entre el principio de la matriz de índices de glifo y uno de los glifos que cabe en el espacio especificado por nMaxExtent
. Aunque esta matriz debe tener al menos tantos elementos como índices de glifo especificados en cgi
, la función rellena la matriz con extensiones solo para tantos índices de glifo como se especifican en lpnFit
. Si lpnDx
es NULL
, la función no calcula anchos de cadena parciales.
lpSize
Puntero a una estructura SIZE
que recibe las dimensiones de la matriz de índices de glifo en unidades lógicas. Este valor no puede ser NULL
.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
Esta función miembro emula la funcionalidad de la función GetTextExtentExPointI
, tal y como se describe en Windows SDK.
CDC::GetTextExtentPointI
Recupera el ancho y el alto de la matriz especificada de índices de glifo.
BOOL GetTextExtentPointI(
LPWORD pgiIn,
int cgi,
LPSIZE lpSize) const;
Parámetros
pgiIn
Puntero a una matriz de índices de glifo para la que se van a recuperar extensiones.
cgi
Especifica el número de glifos de la matriz a la que apunta pgiIn
.
lpSize
Puntero a una estructura SIZE
que recibe las dimensiones de la matriz de índices de glifo en unidades lógicas. Este valor no puede ser NULL
.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
Esta función miembro emula la funcionalidad de la función GetTextExtentPointI
, tal y como se describe en Windows SDK.
CDC::GetTextFace
Llame a esta función miembro para copiar el nombre del tipo de letra de la fuente actual en un búfer.
int GetTextFace(
int nCount,
LPTSTR lpszFacename) const;
int GetTextFace(CString& rString) const;
Parámetros
nCount
Especifica el tamaño del búfer (en bytes). Si el nombre del tipo de letra es más largo que el número de bytes especificado por este parámetro, el nombre se trunca.
lpszFacename
Apunta al búfer para el nombre del tipo de letra.
rString
Referencia a un objeto CString
.
Valor devuelto
El número de bytes copiados en el búfer, sin incluir el carácter nulo de terminación. Es 0 si se produce un error.
Comentarios
El nombre del tipo de letra se copia como una cadena terminada en null.
CDC::GetTextMetrics
Recupera las métricas de la fuente actual que usa el contexto de dispositivo de atributo.
BOOL GetTextMetrics(LPTEXTMETRIC lpMetrics) const;
Parámetros
lpMetrics
Apunta a la estructura TEXTMETRIC
que recibe las métricas.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
CDC::GetViewportExt
Recupera las extensiones x e y del área de visualización del contexto de dispositivo.
CSize GetViewportExt() const;
Valor devuelto
Las extensiones x e y (en unidades de dispositivo) como un objeto CSize
.
CDC::GetViewportOrg
Recupera las coordenadas x e y del origen del área de visualización asociada al contexto de dispositivo.
CPoint GetViewportOrg() const;
Valor devuelto
El origen del área de visualización (en coordenadas del dispositivo) como un objeto CPoint
.
CDC::GetWindow
Devuelve la ventana asociada al contexto de dispositivo de visualización.
CWnd* GetWindow() const;
Valor devuelto
Puntero a un objeto CWnd
si se lleva a cabo correctamente; de lo contrario, NULL
.
Comentarios
Esta es una función avanzada. Por ejemplo, esta función miembro podría no devolver la ventana de visualización al imprimir o en vista previa de impresión. Siempre devuelve la ventana asociada a la salida. Las funciones de salida que usan el contexto de dispositivo determinado dibujan en esta ventana.
CDC::GetWindowExt
Recupera las extensiones x e y de la ventana asociada al contexto de dispositivo.
CSize GetWindowExt() const;
Valor devuelto
Las extensiones x e y (en unidades lógicas) como un objeto CSize
.
CDC::GetWindowOrg
Recupera las coordenadas x e y del origen de la ventana asociada al contexto de dispositivo.
CPoint GetWindowOrg() const;
Valor devuelto
El origen de la ventana (en coordenadas lógicas) como un objeto CPoint
.
CDC::GetWorldTransform
Recupera la transformación actual del espacio global al espacio de página.
BOOL GetWorldTransform(XFORM& rXform) const;
Parámetros
rXform
Referencia a una estructura XFORM
que recibe la transformación actual del espacio global al espacio de página.
Valor devuelto
Devuelve un valor distinto de cero si se ejecuta correctamente.
Devuelve 0 en caso de error.
Para obtener información de errores extendida, realice una llamada a GetLastError
.
Comentarios
Este método encapsula la función GDI de Windows GetWorldTransform
.
CDC::GradientFill
Llame a esta función miembro para rellenar estructuras de rectángulo y triángulo con un color que se atenúa suavemente de un lado a otro.
BOOL GradientFill(
TRIVERTEX* pVertices,
ULONG nVertices,
void* pMesh,
ULONG nMeshElements,
DWORD dwMode);
Parámetros
pVertices
Puntero a una matriz de estructuras TRIVERTEX
que definen un vértice de triángulo.
nVertices
Número de vértices.
pMesh
Matriz de estructuras GRADIENT_TRIANGLE
en modo de triángulo o matriz de estructuras GRADIENT_RECT
en modo de rectángulo.
nMeshElements
Número de elementos (triángulos o rectángulos) de pMesh
.
dwMode
Especifica el modo de relleno degradado. Para ver una lista de valores posibles, consulte GradientFill
en Windows SDK.
Valor devuelto
TRUE
si es correcto; de lo contrario, FALSE
.
Comentarios
Para más información, consulte GradientFill
en Windows SDK.
CDC::GrayString
Dibuja texto atenuado (gris) en la ubicación especificada, para lo que escribe el texto en un mapa de bits de memoria, atenúa el mapa de bits y copia el mapa de bits en la visualización.
virtual BOOL GrayString(
CBrush* pBrush,
BOOL (CALLBACK* lpfnOutput)(
HDC,
LPARAM,
int),
LPARAM lpData,
int nCount,
int x,
int y,
int nWidth,
int nHeight);
Parámetros
pBrush
Identifica el pincel que se va a usar para atenuar.
lpfnOutput
Especifica la dirección de la instancia del procedimiento de la función de devolución de llamada proporcionada por la aplicación que dibujará la cadena. Para obtener más información, consulte la descripción de la función de devolución de llamada de Windows.OutputFunc
Si este parámetro es NULL
, el sistema usa la función TextOut
de Windows para dibujar la cadena y se supone que lpData
es un puntero largo a la cadena de caracteres que se va a generar.
lpData
Especifica un puntero lejano a los datos que se van a pasar a la función de salida. Si lpfnOutput
es NULL
, lpData
debe ser un puntero largo a la cadena que se va a generar.
nCount
Especifica el número de caracteres que se van a generar. Si este parámetro es 0, GrayString
calcula la longitud de la cadena (suponiendo que lpData
es un puntero a la cadena). Si nCount
es 1 y la función a la que apunta lpfnOutput
devuelve 0, la imagen se muestra, pero no está atenuada.
x
Especifica la coordenada x lógica de la posición inicial del rectángulo que incluye la cadena.
y
Especifica la coordenada y lógica de la posición inicial del rectángulo que incluye la cadena.
nWidth
Especifica el ancho (en unidades lógicas) del rectángulo que incluye la cadena. Si nWidth
es 0, GrayString
calcula el ancho del área, suponiendo que lpData
es un puntero a la cadena.
nHeight
Especifica el alto (en unidades lógicas) del rectángulo que incluye la cadena. Si nHeight
es 0, GrayString
calcula el alto del área, suponiendo que lpData
es un puntero a la cadena.
Valor devuelto
Distinto de cero si se dibuja la cadena, o 0 si la función TextOut
o la función de salida proporcionada por la aplicación devolvieron 0 o si no había memoria suficiente para crear un mapa de bits de memoria para atenuar.
Comentarios
La función atenúa el texto independientemente del pincel y el fondo seleccionados. La función miembro GrayString
usa la fuente seleccionada actualmente. Debe seleccionarse el modo de asignación MM_TEXT
antes de usar esta función.
Una aplicación puede dibujar cadenas atenuadas en dispositivos que admitan un color gris sólido sin llamar a la función miembro GrayString
. El color del sistema COLOR_GRAYTEXT
es el color del sistema gris sólido que se usa para dibujar texto deshabilitado. La aplicación puede llamar a la función de Windows GetSysColor
para recuperar el valor de color de COLOR_GRAYTEXT
. Si el color es distinto de 0 (negro), la aplicación puede llamar a la SetTextColor
función miembro para establecer el color de texto en el valor de color y, a continuación, dibujar la cadena directamente. Si el color recuperado es negro, la aplicación debe llamar a GrayString
para atenuar el texto.
Si lpfnOutput
es NULL
, GDI usa la función de Windows TextOut
y se supone que lpData
es un puntero lejano al carácter que se va a generar. Si la función miembro TextOut
no puede controlar los caracteres que se van a generar (por ejemplo, la cadena se almacena como un mapa de bits), la aplicación debe proporcionar su propia función de salida.
Todas las funciones de devolución de llamada deben interceptar las excepciones de Microsoft Foundation antes de volver a Windows, ya que no se pueden producir excepciones a través de los límites de devolución de llamada. Para obtener más información sobre las excepciones, consulte el artículo Excepciones.
La función de devolución de llamada que se pasa a GrayString
debe usar la convención de llamada __stdcall
y debe exportarse con __declspec
.
Cuando el marco está en modo de vista previa, una llamada a la GrayString
función miembro se traduce a una TextOut
llamada y no se llama a la función de devolución de llamada.
CDC::HIMETRICtoDP
Use esta función al convertir tamaños HIMETRIC
de OLE a píxeles.
void HIMETRICtoDP(LPSIZE lpSize) const;
Parámetros
lpSize
Apunta a una estructura SIZE
o un objeto CSize
.
Comentarios
Si el modo de asignación del objeto de contexto del dispositivo es MM_LOENGLISH
, MM_HIENGLISH
, MM_LOMETRIC
o MM_HIMETRIC
, la conversión se basa en el número de píxeles de la pulgada física. Si el modo de asignación es uno de los otros modos no restringidos (por ejemplo, MM_TEXT
), la conversión se basa en el número de píxeles de la pulgada lógica.
CDC::HIMETRICtoLP
Llame a esta función para convertir unidades HIMETRIC
en unidades lógicas.
void HIMETRICtoLP(LPSIZE lpSize) const;
Parámetros
lpSize
Apunta a una estructura SIZE
o un objeto CSize
.
Comentarios
Use esta función cuando obtenga tamaños HIMETRIC
de OLE y quiera convertirlos al modo de asignación natural de la aplicación.
Para llevar a cabo la conversión, primero se convierten las unidades HIMETRIC
en píxeles y, luego, estas unidades se convierten en unidades lógicas mediante las unidades de asignación actuales del contexto de dispositivo. Tenga en cuenta que las extensiones de la ventana y del área de visualización del dispositivo afectarán al resultado.
CDC::IntersectClipRect
Crea una zona de recorte al formar la intersección de la región actual y el rectángulo especificado por x1
, y1
, x2
y y2
.
int IntersectClipRect(
int x1,
int y1,
int x2,
int y2);
int IntersectClipRect(LPCRECT lpRect);
Parámetros
x1
Especifica la coordenada x lógica de la esquina superior izquierda del rectángulo.
y1
Especifica la coordenada y lógica de la esquina superior izquierda del rectángulo.
x2
Especifica la coordenada x lógica de la esquina inferior derecha del rectángulo.
y2
Especifica la coordenada y lógica de la esquina inferior derecha del rectángulo.
lpRect
Especifica el rectángulo. Puede pasar un objeto CRect
o un puntero a una estructura RECT
para este parámetro.
Valor devuelto
El tipo de la nueva zona de recorte. Puede tener cualquiera de los valores siguientes:
COMPLEXREGION
: la nueva zona de recorte tiene bordes superpuestos.ERROR
El contexto del dispositivo no es válido.NULLREGION
: la nueva zona de recorte está vacía.SIMPLEREGION
: la nueva zona de recorte no tiene bordes superpuestos.
Comentarios
GDI recorta todos los resultados posteriores para que quepan dentro del nuevo límite. El ancho y el alto no deben superar 32 767.
CDC::InvertRect
Invierte el contenido del rectángulo especificado.
void InvertRect(LPCRECT lpRect);
Parámetros
lpRect
Apunta a un objeto RECT
que contiene las coordenadas lógicas del rectángulo que se va a invertir. También puede pasar un objeto CRect
para este parámetro.
Comentarios
La inversión es una operación NOT lógica y voltea los bits de cada píxel. En visualizaciones monocromáticas, la función hace que los píxeles blancos sean negros y los negros, blancos. En visualizaciones de color, la inversión depende de cómo se generan los colores de la pantalla. Al llamar a InvertRect
dos veces con el mismo rectángulo, se restaura la visualización a sus colores anteriores.
Si el rectángulo está vacío, no se dibuja nada.
Ejemplo
void CDCView::DoInvertRect(CDC *pDC)
{
// invert rect from 20,20 to 50,50
CRect rect(20, 20, 50, 50);
pDC->InvertRect(rect);
// inverting again restores to normal
::Sleep(1000);
pDC->InvertRect(rect);
}
CDC::InvertRgn
Invierte los colores de la región especificada por pRgn
.
BOOL InvertRgn(CRgn* pRgn);
Parámetros
pRgn
Identifica la región que se va a invertir. Las coordenadas de la región se especifican en unidades lógicas.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
En visualizaciones monocromáticas, la función hace que los píxeles blancos sean negros y los negros, blancos. En visualizaciones de color, la inversión depende de cómo se generan los colores de la pantalla.
CDC::IsPrinting
Determina si el contexto de dispositivo se usa para imprimir.
BOOL IsPrinting() const;
Valor devuelto
Distinto de cero si el objeto CDC
es un contexto de dispositivo de impresora; en caso contrario, 0.
CDC::LineTo
Dibuja una línea de la posición actual hasta el punto especificado por x
y y
(o point
), pero sin incluirlo.
BOOL LineTo(
int x,
int y);
BOOL LineTo(POINT point);
Parámetros
x
Especifica la coordenada x lógica del extremo de la línea.
y
Especifica la coordenada y lógica del extremo de la línea.
point
Especifica el extremo de la línea. Puede pasar una estructura POINT
o un objeto CPoint
para este parámetro.
Valor devuelto
Es distinto de cero si se dibuja la línea; de lo contrario, es 0.
Comentarios
La línea se dibuja con el lápiz seleccionado. La posición actual se establece en x
, y
o point
.
Ejemplo
Vea el ejemplo de CRect::CenterPoint
.
CDC::LPtoDP
Convierte las unidades lógicas en unidades de dispositivo.
void LPtoDP(
LPPOINT lpPoints,
int nCount = 1) const;
void LPtoDP(LPRECT lpRect) const;
void LPtoDP(LPSIZE lpSize) const;
Parámetros
lpPoints
Apunta a una matriz de puntos. Cada punto de la matriz es una estructura POINT
o un objeto CPoint
.
nCount
Número de puntos de la matriz.
lpRect
Apunta a una estructura RECT
o un objeto CRect
. Este parámetro se usa para el caso común de asignar un rectángulo de unidades lógicas a unidades de dispositivo.
lpSize
Apunta a una estructura SIZE
o un objeto CSize
.
Comentarios
La función asigna las coordenadas de cada punto, o dimensión de un tamaño, del sistema de coordenadas lógicas de GDI al sistema de coordenadas del dispositivo. La conversión depende del modo de asignación actual y de la configuración de los orígenes y extensiones de la ventana y el área de visualización del dispositivo.
Las coordenadas x e y de los puntos son enteros con signo de 2 bytes en el intervalo de -32 768 a 32 767. En los casos en los que el modo de asignación daría lugar a valores superiores a estos límites, el sistema establece los valores en -32 768 y 32 767, respectivamente.
CDC::LPtoHIMETRIC
Llame a esta función para convertir unidades lógicas en unidades HIMETRIC
.
void LPtoHIMETRIC(LPSIZE lpSize) const;
Parámetros
lpSize
Apunta a una estructura SIZE
o un objeto CSize
.
Comentarios
Use esta función cuando asigne tamaños HIMETRIC
a OLE y realice una conversión desde el modo de asignación natural de la aplicación. Las extensiones de la ventana y la ventanilla del dispositivo afectarán al resultado.
Para llevar a cabo la conversión, primero se convierten las unidades lógicas en píxeles mediante las unidades de asignación actuales del contexto de dispositivo y, luego, estas unidades se convierten en unidades HIMETRIC
.
CDC::m_hAttribDC
Contexto de dispositivo de atributo para este objeto CDC
.
HDC m_hAttribDC;
Comentarios
De forma predeterminada, este contexto de dispositivo es igual a m_hDC
. En general, las llamadas a CDC
de GDI que solicitan información del contexto de dispositivo se dirigen a m_hAttribDC
. Consulte la descripción de la clase CDC
para obtener más información sobre el uso de estos dos contextos de dispositivo.
CDC::m_hDC
Contexto de dispositivo de salida para este objeto CDC
.
HDC m_hDC;
Comentarios
De forma predeterminada, m_hDC
es igual a m_hAttribDC
, el otro contexto de dispositivo encapsulado por CDC
. En general, las llamadas a CDC
de GDI que crean la salida van al contexto de dispositivo m_hDC
. Puede inicializar m_hDC
y m_hAttribDC
para apuntar a dispositivos diferentes. Consulte la descripción de la clase CDC
para obtener más información sobre el uso de estos dos contextos de dispositivo.
CDC::MaskBlt
Combina los datos de color de los mapas de bits de origen y destino mediante la operación de máscara y trama especificadas.
BOOL MaskBlt(
int x,
int y,
int nWidth,
int nHeight,
CDC* pSrcDC,
int xSrc,
int ySrc,
CBitmap& maskBitmap,
int xMask,
int yMask,
DWORD dwRop);
Parámetros
x
Especifica la coordenada x lógica de la esquina superior izquierda del rectángulo de destino.
y
Especifica la coordenada y lógica de la esquina superior izquierda del rectángulo de destino.
nWidth
Especifica el ancho en unidades lógicas del rectángulo de destino y del mapa de bits de origen.
nHeight
Especifica el alto en unidades lógicas del rectángulo de destino y del mapa de bits de origen.
pSrcDC
Identifica el contexto de dispositivo del que se va a copiar el mapa de bits. Debe ser cero si el dwRop
parámetro especifica una operación de trama que no incluye un origen.
xSrc
Especifica la coordenada x lógica de la esquina superior izquierda del mapa de bits de origen.
ySrc
Especifica la coordenada y lógica de la esquina superior izquierda del mapa de bits de origen.
maskBitmap
Identifica el mapa de bits de máscara monocromática combinado con el mapa de bits de color en el contexto de dispositivo de origen.
xMask
Especifica el desplazamiento horizontal de píxeles para el mapa de bits de máscara especificado por el parámetro maskBitmap
.
yMask
Especifica el desplazamiento vertical de píxeles para el mapa de bits de máscara especificado por el parámetro maskBitmap
.
dwRop
Especifica los códigos de operación de trama ternario en primer plano y en segundo plano, que la función usa para controlar la combinación de datos de origen y destino. El código de operación de trama de segundo plano se almacena en el byte superior de la palabra superior de este valor; el código de operación de trama de primer plano se almacena en el byte inferior de la palabra superior de este valor; se omite la palabra inferior de este valor y debe ser cero. La macro MAKEROP4
crea estas combinaciones de códigos de operación de trama de primer plano y segundo plano. Consulte la sección Comentarios para ver una descripción de los conceptos de primer plano y segundo plano en el contexto de esta función. Consulte la función miembro BitBlt
para ver una lista de códigos de operación de trama comunes.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
Un valor de 1 en la máscara especificada por maskBitmap
indica que el código de operación de trama de primer plano especificado por dwRop
debe aplicarse en esa ubicación. Un valor de 0 en la máscara indica que el código de operación de trama de segundo plano especificado por dwRop
debe aplicarse en esa ubicación. Si las operaciones de trama requieren un origen, el rectángulo de máscara debe cubrir el rectángulo de origen. Si no es así, se produce un error en la función. Si las operaciones de trama no requieren un origen, el rectángulo de máscara debe cubrir el rectángulo de destino. Si no es así, se produce un error en la función.
Si una transformación de rotación o distorsión está en vigor para el contexto de dispositivo de origen cuando se llama a esta función, se produce un error. Aun así, se permiten otros tipos de transformaciones.
Si los formatos de color de los mapas de bits de origen, patrón y destino difieren, esta función convierte el formato de patrón o de origen (o ambos) para que coincidan con el formato de destino. Si el mapa de bits de máscara no es un mapa de bits monocromo, se produce un error. Cuando se registra un metarchivo mejorado, se produce un error (y la función devuelve 0) si el contexto de dispositivo de origen identifica un contexto de dispositivo de metarchivo mejorado. No todos los dispositivos admiten MaskBlt
. Una aplicación debe llamar a GetDeviceCaps
para determinar si un dispositivo admite esta función. Si no se proporciona ningún mapa de bits de máscara, esta función se comporta exactamente como BitBlt
, mediante el uso del código de operación de trama de primer plano. Los desplazamientos de píxeles en el mapa de bits de máscara se asignan al punto (0,0) en el mapa de bits del contexto de dispositivo de origen. Esto es útil para los casos en los que un mapa de bits de máscara contiene un conjunto de máscaras. Una aplicación puede aplicar fácilmente cualquiera de ellas a una tarea de enmascaramiento mediante el ajuste de los desplazamientos de píxeles y los tamaños de rectángulo que se envían a MaskBlt
.
CDC::ModifyWorldTransform
Cambia la transformación global de un contexto de dispositivo mediante el modo especificado.
BOOL ModifyWorldTransform(
const XFORM& rXform,
DWORD iMode);
Parámetros
rXform
Referencia a una estructura XFORM
usada para modificar la transformación global para el contexto de dispositivo determinado.
iMode
Especifica la forma en que los datos de transformación modifican la transformación global actual. Para obtener una lista de los valores que puede tomar este parámetro, consulte ModifyWorldTransform
.
Valor devuelto
Devuelve un valor distinto de cero si se ejecuta correctamente.
Devuelve 0 en caso de error.
Para obtener información de errores extendida, realice una llamada a GetLastError
.
Comentarios
Este método encapsula la función GDI de Windows ModifyWorldTransform
.
CDC::MoveTo
Mueve la posición actual al punto especificado por x
y y
(o por point
).
CPoint MoveTo(
int x,
int y);
CPoint MoveTo(POINT point);
Parámetros
x
Especifica la coordenada x lógica de la nueva posición.
y
Especifica la coordenada y lógica de la nueva posición.
point
Especifica la nueva posición. Puede pasar una estructura POINT
o un objeto CPoint
para este parámetro.
Valor devuelto
Las coordenadas x e y de la posición anterior como un objeto CPoint
.
Ejemplo
Vea el ejemplo de CRect::CenterPoint
.
CDC::OffsetClipRgn
Mueve la zona de recorte del contexto de dispositivo según los desplazamientos especificados.
int OffsetClipRgn(
int x,
int y);
int OffsetClipRgn(SIZE size);
Parámetros
x
Especifica el número de unidades lógicas que se van a mover a la izquierda o a la derecha.
y
Especifica el número de unidades lógicas que se van a mover hacia arriba o hacia abajo.
size
Especifica la cantidad que se va a desplazar.
Valor devuelto
El tipo de la nueva región. Puede tener cualquiera de los valores siguientes:
COMPLEXREGION
: la zona de recorte tiene bordes superpuestos.ERROR
El contexto del dispositivo no es válido.NULLREGION
: la zona de recorte está vacía.SIMPLEREGION
: la zona de recorte no tiene bordes superpuestos.
Comentarios
La función mueve la región x
unidades a lo largo del eje x y y
unidades a lo largo del eje y.
CDC::OffsetViewportOrg
Modifica las coordenadas del origen del área de visualización en relación con las coordenadas del origen del área de visualización actual.
virtual CPoint OffsetViewportOrg(
int nWidth,
int nHeight);
Parámetros
nWidth
Especifica el número de unidades de dispositivo que se van a agregar a la coordenada x del origen actual.
nHeight
Especifica el número de unidades de dispositivo que se van a agregar a la coordenada y del origen actual.
Valor devuelto
El origen del área de visualización anterior (en coordenadas del dispositivo) como un objeto CPoint
.
CDC::OffsetWindowOrg
Modifica las coordenadas del origen de la ventana en relación con las coordenadas del origen de la ventana actual.
CPoint OffsetWindowOrg(
int nWidth,
int nHeight);
Parámetros
nWidth
Especifica el número de unidades lógicas que se van a agregar a la coordenada x del origen actual.
nHeight
Especifica el número de unidades lógicas que se van a agregar a la coordenada y del origen actual.
Valor devuelto
El origen de la ventana anterior (en coordenadas lógicas) como un objeto CPoint
.
CDC::operator HDC
Use este operador para recuperar el identificador del contexto de dispositivo del objeto CDC
.
operator HDC() const;
Valor devuelto
Si se ejecuta correctamente, el identificador del objeto de contexto de dispositivo; de lo contrario, NULL
.
Comentarios
Puede usar el manipulador para llamar directamente a las API de Windows.
CDC::PaintRgn
Rellena la región especificada por pRgn
con el pincel actual.
BOOL PaintRgn(CRgn* pRgn);
Parámetros
pRgn
Identifica la región que se va a rellenar. Las coordenadas de la región dada se especifican en unidades lógicas.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
CDC::PatBlt
Crea un patrón de bits en el dispositivo.
BOOL PatBlt(
int x,
int y,
int nWidth,
int nHeight,
DWORD dwRop);
Parámetros
x
Especifica la coordenada x lógica de la esquina superior izquierda del rectángulo que va a recibir el patrón.
y
Especifica la coordenada y lógica de la esquina superior izquierda del rectángulo que va a recibir el patrón.
nWidth
Especifica el ancho (en unidades lógicas) del rectángulo que va a recibir el patrón.
nHeight
Especifica el alto (en unidades lógicas) del rectángulo que va a recibir el patrón.
dwRop
Especifica el código de operación de trama. Los códigos de operación de trama (ROP) definen cómo combina GDI los colores en las operaciones de salida que implican un pincel actual, un posible mapa de bits de origen y un mapa de bits de destino. Este parámetro puede establecerse con uno de los siguientes valores:
PATCOPY
: copia el patrón en el mapa de bits de destino.PATINVERT
: combina el mapa de bits de destino con el patrón mediante el operador XOR booleano (^
).DSTINVERT
: invierte el mapa de bits de destino.BLACKNESS
: pone en negro toda la salida.WHITENESS
: pone en blanco toda la salida.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
El patrón es una combinación del pincel seleccionado y el patrón que ya está en el dispositivo. El código de operación de trama especificado por dwRop
define cómo se combinarán los patrones. Las operaciones de trama enumeradas para esta función son un subconjunto limitado de los 256 códigos de operación de trama ternarios completos; en concreto, no se puede usar un código de operación de trama que haga referencia a un origen.
No todos los contextos de dispositivo admiten la función PatBlt
. Para determinar si un contexto de dispositivo admite PatBlt
, llame a la función miembro GetDeviceCaps
con el índice RASTERCAPS
y compruebe el valor devuelto para la marca RC_BITBLT
.
CDC::Pie
Dibuja una cuña en forma circular, para lo que dibuja un arco elíptico cuyo centro y dos extremos están unidos por líneas.
BOOL Pie(
int x1,
int y1,
int x2,
int y2,
int x3,
int y3,
int x4,
int y4);
BOOL Pie(
LPCRECT lpRect,
POINT ptStart,
POINT ptEnd);
Parámetros
x1
Especifica la coordenada x de la esquina superior izquierda del rectángulo delimitador (en unidades lógicas).
y1
Especifica la coordenada y de la esquina superior izquierda del rectángulo delimitador (en unidades lógicas).
x2
Especifica la coordenada x de la esquina inferior derecha del rectángulo delimitador (en unidades lógicas).
y2
Especifica la coordenada y de la esquina inferior derecha del rectángulo delimitador (en unidades lógicas).
x3
Especifica la coordenada x del punto inicial del arco (en unidades lógicas). Este punto no tiene que estar exactamente en el arco.
y3
Especifica la coordenada y del punto inicial del arco (en unidades lógicas). Este punto no tiene que estar exactamente en el arco.
x4
Especifica la coordenada x del punto final del arco (en unidades lógicas). Este punto no tiene que estar exactamente en el arco.
y4
Especifica la coordenada y del punto final del arco (en unidades lógicas). Este punto no tiene que estar exactamente en el arco.
lpRect
Especifica el rectángulo delimitador. Puede pasar un objeto CRect
o un puntero a una estructura RECT
para este parámetro.
ptStart
Especifica el punto inicial del arco. Este punto no tiene que estar exactamente en el arco. Puede pasar una POINT
estructura o un CPoint
objeto para este parámetro.
ptEnd
Especifica el punto de conexión del arco. Este punto no tiene que estar exactamente en el arco. Puede pasar una POINT
estructura o un CPoint
objeto para este parámetro.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
El centro del arco es el centro del rectángulo delimitador especificado por x1
, y1
, x2
y y2
(o lpRect
). Los puntos inicial y final del arco se especifican mediante x3
, y3
, x4
y y4
(o ptStart
y ptEnd
).
El arco se dibuja con el lápiz seleccionado en sentido contrario a las agujas del reloj. Se dibujan dos líneas más de cada punto de conexión al centro del arco. El área con forma circular se rellena con el pincel actual. Si x3
es igual a x4
y y3
es igual a y4
, el resultado es una elipse con una sola línea desde el centro de la elipse hasta el punto (x3
, y3
) o (x4
, y4
).
La ilustración dibujada por esta función se extiende hasta pero no incluye las coordenadas derecha e inferior. Esto significa que el alto de la figura es y2
- y1
y el ancho es x2
- x1
. Tanto el ancho como el alto del rectángulo delimitador deben tener más de 2 unidades y menos de 32 767.
Ejemplo
void CDCView::DrawPie(CDC *pDC)
{
// Fill the client area with a simple pie chart. A
// big blue slice covers 75% of the pie, from
// 6 o'clock to 3 o'clock. This portion is filled
// with blue and has a blue edge. The remaining 25%
// is filled with a red, diagonal hatch and has
// a red edge.
// Get the client area.
CRect rectClient;
GetClientRect(rectClient);
// Make a couple of pens and similar brushes.
CPen penBlue, penRed;
CBrush brushBlue, brushRed;
CBrush *pOldBrush;
CPen *pOldPen;
brushBlue.CreateSolidBrush(RGB(0, 0, 255));
brushRed.CreateHatchBrush(HS_FDIAGONAL, RGB(255, 0, 0));
penBlue.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(0, 0, 255));
penRed.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(255, 0, 0));
// Draw from 3 o'clock to 6 o'clock, counterclockwise,
// in a blue pen with a solid blue fill.
pOldPen = pDC->SelectObject(&penBlue);
pOldBrush = pDC->SelectObject(&brushBlue);
pDC->Pie(rectClient,
CPoint(rectClient.right, rectClient.CenterPoint().y),
CPoint(rectClient.CenterPoint().x, rectClient.right));
// Draw the remaining quarter slice from 6 o'clock
// to 3 o'clock, counterclockwise, in a red pen with
// the hatched brush.
pDC->SelectObject(&penRed);
pDC->SelectObject(&brushRed);
// Same parameters, but reverse start and end points.
pDC->Pie(rectClient,
CPoint(rectClient.CenterPoint().x, rectClient.right),
CPoint(rectClient.right, rectClient.CenterPoint().y));
// Restore the previous pen.
pDC->SelectObject(pOldPen);
}
CDC::PlayMetaFile
Reproduce el contenido del metarchivo especificado en el contexto de dispositivo.
BOOL PlayMetaFile(HMETAFILE hMF);
BOOL PlayMetaFile(
HENHMETAFILE hEnhMetaFile,
LPCRECT lpBounds);
Parámetros
hMF
Identifica el metarchivo que se va a reproducir.
hEnhMetaFile
Identifica el metarchivo mejorado.
lpBounds
Apunta a una estructura RECT
o un objeto CRect
que contiene las coordenadas del rectángulo delimitador usado para mostrar la imagen. Las coordenadas se especifican en unidades lógicas.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
El metarchivo se puede reproducir cualquier número de veces.
La segunda versión de PlayMetaFile
muestra la imagen almacenada en el metarchivo de formato mejorado. Cuando una aplicación llama a la segunda versión de PlayMetaFile
, Windows usa el marco de imagen en el encabezado de metarchivo mejorado para asignar la imagen al rectángulo al que apunta el parámetro lpBounds. (Esta imagen se puede distorsionar o girar si se establece la transformación global en el dispositivo de salida antes de llamar a PlayMetaFile
). Los puntos a lo largo de los bordes del rectángulo se incluyen en la imagen. Se puede recortar una imagen de metarchivo mejorado si se define la zona de recorte en el dispositivo de salida antes de reproducir el metarchivo mejorado.
Si un metarchivo mejorado contiene una paleta opcional, una aplicación puede lograr colores coherentes si se configura una paleta de colores en el dispositivo de salida antes de llamar a la segunda versión de PlayMetaFile
. Para recuperar la paleta opcional, use la función GetEnhMetaFilePaletteEntries
de Windows. Un metarchivo mejorado se puede insertar en un metarchivo mejorado recién creado. Para ello, es necesario llamar a la segunda versión de PlayMetaFile
y reproducir el metarchivo mejorado de origen en el contexto de dispositivo del nuevo metarchivo mejorado.
Esta función conserva los estados del contexto de dispositivo de salida. Esta función elimina cualquier objeto que se haya creado pero no eliminado del metarchivo mejorado. Para detener esta función, una aplicación puede llamar a la función CancelDC
de Windows desde otro subproceso para finalizar la operación. En este caso, la función devuelve cero.
CDC::PlgBlt
Realiza una transferencia de bloques de bits de los bits de datos de color desde el rectángulo especificado en el contexto de dispositivo de origen hasta el paralelogramo especificado en el contexto de dispositivo determinado.
BOOL PlgBlt(
LPPOINT lpPoint,
CDC* pSrcDC,
int xSrc,
int ySrc,
int nWidth,
int nHeight,
CBitmap& maskBitmap,
int xMask,
int yMask);
Parámetros
lpPoint
Apunta a una matriz de tres puntos en el espacio lógico que identifica tres esquinas del paralelogramo de destino. La esquina superior izquierda del rectángulo de origen se asigna al primer punto de esta matriz, la esquina superior derecha al segundo punto de esta matriz y la esquina inferior izquierda al tercer punto. La esquina inferior derecha del rectángulo de origen se asigna al cuarto punto implícito del paralelismo.
pSrcDC
Identifica el contexto de dispositivo de origen.
xSrc
Especifica la coordenada x, en unidades lógicas, de la esquina superior izquierda del rectángulo de origen.
ySrc
Especifica la coordenada y, en unidades lógicas, de la esquina superior izquierda del rectángulo de origen.
nWidth
Especifica el ancho, en unidades lógicas, del rectángulo de origen.
nHeight
Especifica el alto, en unidades lógicas, del rectángulo de origen.
maskBitmap
Identifica un mapa de bits monocromo opcional que se usa para enmascarar los colores del rectángulo de origen.
xMask
Especifica la coordenada x de la esquina superior izquierda del mapa de bits monocromo.
yMask
Especifica la coordenada y de la esquina superior izquierda del mapa de bits monocromo.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
Si el identificador de máscara de bits determinado identifica un mapa de bits monocromático válido, la función usa este mapa de bits para enmascarar los bits de datos de color del rectángulo de origen.
Para definir el cuarto vértice del paralelogramo (D), los tres primeros puntos (A, B y C) se tratan como vectores y se calcula que D = B + C - A.
Si la máscara de bits existe, un valor de 1 en la máscara indica que el color de píxel de origen debe copiarse en el destino. Un valor de 0 en la máscara indica que no se va a cambiar el color del píxel de destino.
Si el rectángulo de máscara es menor que los rectángulos de origen y destino, la función replica el patrón de máscara.
Las transformaciones de escalado, traducción y reflexión se permiten en el contexto del dispositivo de origen; sin embargo, las transformaciones de rotación y de descilación no son. Si el mapa de bits de máscara no es un mapa de bits monocromo, se produce un error. El modo de extensión para el contexto de dispositivo de destino se usa para determinar cómo se estiran o se comprimen los píxeles, si es necesario. Cuando se registra un metarchivo mejorado, se produce un error si el contexto de dispositivo de origen identifica un contexto de dispositivo de metarchivo mejorado.
Las coordenadas de destino se transforman según el contexto de dispositivo de destino; las coordenadas de origen se transforman según el contexto de dispositivo de origen. Si la transformación de origen tiene una rotación o distorsión, se devuelve un error. Si los rectángulos de origen y de destino no tienen el mismo formato de color, PlgBlt
convierte el rectángulo de origen para que coincida con el rectángulo de destino. No todos los dispositivos admiten PlgBlt
. Para obtener más información, consulte la descripción de la funcionalidad de trama RC_BITBLT
en la función miembro CDC::GetDeviceCaps
.
Si los contextos de dispositivo de origen y destino representan dispositivos incompatibles, PlgBlt
devuelve un error.
CDC::PolyBezier
Dibuja una o varias B-splines.
BOOL PolyBezier(
const POINT* lpPoints,
int nCount);
Parámetros
lpPoints
Apunta a una matriz de estructuras de datos POINT
que contienen los extremos y los puntos de control de las curvas spline.
nCount
Especifica el número de puntos de la matriz lpPoints
. Este valor debe ser uno más de tres veces el número de splines que se van a dibujar, ya que cada spline Bzier requiere dos puntos de control y un punto de conexión, y la spline inicial requiere otro punto de partida.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
Esta función dibuja B-splines cúbicas mediante los extremos y los puntos de control especificados por el parámetro lpPoints
. La primera spline se dibuja desde el primer punto hasta el cuarto. Para ello, el segundo y el tercer punto se usan como puntos de control. Cada curva spline posterior de la secuencia necesita exactamente tres puntos más: el punto final de la curva spline anterior se usa como punto inicial, los dos puntos siguientes de la secuencia son puntos de control y el tercero es el punto final.
La función no usa ni actualiza la PolyBezier
posición actual. La figura no se rellena. Esta función dibuja líneas con el lápiz actual.
CDC::PolyBezierTo
Dibuja una o varias B-splines.
BOOL PolyBezierTo(
const POINT* lpPoints,
int nCount);
Parámetros
lpPoints
Apunta a una matriz de estructuras de datos POINT
que contienen los extremos y los puntos de control.
nCount
Especifica el número de puntos de la matriz lpPoints
. Este valor debe ser tres veces el número de splines que se van a dibujar, ya que cada B-spline requiere dos puntos de control y un punto final.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
Esta función dibuja B-splines cúbicas mediante los puntos de control especificados por el parámetro lpPoints
. La primera curva spline se dibuja desde la posición actual hasta el tercer punto. Para ello, los dos primeros puntos se usan como puntos de control. Para cada curva spline posterior, la función necesita exactamente tres puntos más y usa el punto final de la curva spline anterior como punto inicial de la siguiente. PolyBezierTo
mueve la posición actual al punto final de la última B-spline. La figura no se rellena. Esta función dibuja líneas con el lápiz actual.
Ejemplo
Vea el ejemplo de CDC::BeginPath
.
CDC::PolyDraw
Dibuja un conjunto de segmentos de línea y B-splines.
BOOL PolyDraw(
const POINT* lpPoints,
const BYTE* lpTypes,
int nCount);
Parámetros
lpPoints
Apunta a una matriz de estructuras de datos POINT
que contiene los extremos de cada segmento de línea y los extremos y puntos de control de cada B-spline.
lpTypes
Apunta a una matriz que especifica cómo se usa cada punto de la matriz lpPoints
. Los valores pueden ser cualquier de los siguientes:
PT_MOVETO
: especifica que este punto inicia una figura no contigua. Este punto se convierte en la nueva posición actual.PT_LINETO
: especifica que se va a dibujar una línea desde la posición actual hasta este punto, que luego se convierte en la nueva posición actual.PT_BEZIERTO
: especifica que este punto es un punto de control o un punto final de una B-spline.
PT_BEZIERTO
: los tipos siempre se producen en conjuntos de tres. La posición actual define el punto inicial de la B-spline. Los dos primeros puntos PT_BEZIERTO
son los puntos de control y el tercer punto PT_BEZIERTO
es el punto final. Este punto final se convierte en la nueva posición actual. Si no hay tres puntos consecutivos PT_BEZIERTO
, se produce un error.
Un tipo PT_LINETO
o PT_BEZIERTO
puede combinarse con la constante siguiente mediante el operador bit a bit OR para indicar que el punto correspondiente es el último punto de una figura y que la figura debe cerrarse:
PT_CLOSEFIGURE
: especifica que la figura se cierra automáticamente después de que se realice el tipoPT_LINETO
oPT_BEZIERTO
para este punto. Una línea se dibuja desde este punto hasta el puntoPT_MOVETO
oMoveTo
más reciente.Esta marca se combina con el tipo
PT_LINETO
de una línea, o con el tipoPT_BEZIERTO
del punto final de una B-spline mediante el operador OR bit a bit. La posición actual se establece en el punto final de la línea de cierre.
nCount
Especifica el número total de puntos de la matriz lpPoints
, igual que el número de bytes de la matriz lpTypes
.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
Esta función se puede usar para dibujar figuras no contiguas, en lugar de llamadas consecutivas a funciones miembro CDC::MoveTo
, CDC::LineTo
y CDC::PolyBezierTo
. Las líneas y splines se dibujan con el lápiz actual y las figuras no se rellenan. Si hay una ruta de acceso activa iniciada llamando a la CDC::BeginPath
función miembro, PolyDraw
agrega a la ruta de acceso. Los puntos contenidos en la matriz lpPoints
y en lpTypes
indican si cada punto forma parte de una operación CDC::MoveTo
, CDC::LineTo
o CDC::BezierTo
. También es posible cerrar cifras. Esta función actualiza la posición actual.
Ejemplo
Vea el ejemplo de CDC::BeginPath
.
CDC::Polygon
Dibuja un polígono que consta de dos o más puntos (vértices) conectados por líneas con el lápiz actual.
BOOL Polygon(
LPPOINT lpPoints,
int nCount);
Parámetros
lpPoints
Apunta a una matriz de puntos que especifica los vértices del polígono. Cada punto de la matriz es una estructura POINT
o un objeto CPoint
.
nCount
Especifica el número de vértices de la matriz.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
El sistema cierra el polígono automáticamente, si es necesario. Para ello, dibuja una línea del último vértice al primero.
El modo de relleno de polígono actual se puede recuperar o establecer mediante las funciones miembro GetPolyFillMode
y SetPolyFillMode
.
Ejemplo
void CDCView::DrawPolygon(CDC *pDC)
{
// find the client area
CRect rect;
GetClientRect(rect);
// draw with a thick blue pen
CPen penBlue(PS_SOLID, 5, RGB(0, 0, 255));
CPen *pOldPen = pDC->SelectObject(&penBlue);
// and a solid red brush
CBrush brushRed(RGB(255, 0, 0));
CBrush *pOldBrush = pDC->SelectObject(&brushRed);
// Find the midpoints of the top, right, left, and bottom
// of the client area. They will be the vertices of our polygon.
CPoint pts[4];
pts[0].x = rect.left + rect.Width() / 2;
pts[0].y = rect.top;
pts[1].x = rect.right;
pts[1].y = rect.top + rect.Height() / 2;
pts[2].x = pts[0].x;
pts[2].y = rect.bottom;
pts[3].x = rect.left;
pts[3].y = pts[1].y;
// Calling Polygon() on that array will draw three lines
// between the points, as well as an additional line to
// close the shape--from the last point to the first point
// we specified.
pDC->Polygon(pts, 4);
// Put back the old objects.
pDC->SelectObject(pOldPen);
pDC->SelectObject(pOldBrush);
}
CDC::Polyline
Dibuja un conjunto de segmentos de línea que conectan los puntos especificados por lpPoints
.
BOOL Polyline(
LPPOINT lpPoints,
int nCount);
Parámetros
lpPoints
Apunta a una matriz de estructuras POINT
u objetos CPoint
que se van a conectar.
nCount
`
Especifica el número de puntos de la matriz. Este valor debe ser al menos 2.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
Las líneas se dibujan desde el primer punto hasta los puntos posteriores con el lápiz actual. A diferencia de la LineTo
función miembro, la Polyline
función no usa ni actualiza la posición actual.
Para más información, consulte PolyLine
en Windows SDK.
CDC::PolylineTo
Dibuja una o varias líneas rectas.
BOOL PolylineTo(
const POINT* lpPoints,
int nCount);
Parámetros
lpPoints
Apunta a una matriz de estructuras de datos POINT
que contiene los vértices de la línea.
nCount
Especifica el número de puntos de la matriz.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
Una línea se dibuja desde la posición actual hasta el primer punto especificado por el parámetro lpPoints
con el lápiz actual. Para cada línea adicional, la función dibuja desde el punto final de la línea anterior hasta el siguiente punto especificado por lpPoints
. PolylineTo
mueve la posición actual al punto final de la última línea. Si los segmentos de línea dibujados por esta función forman una figura cerrada, la figura no se rellena.
CDC::PolyPolygon
Crea dos o más polígonos que se rellenan mediante el modo de relleno de polígono actual.
BOOL PolyPolygon(
LPPOINT lpPoints,
LPINT lpPolyCounts,
int nCount);
Parámetros
lpPoints
Apunta a una matriz de estructuras POINT
u objetos CPoint
que definen los vértices de los polígonos.
lpPolyCounts
Apunta a una matriz de enteros, cada uno de los cuales especifica el número de puntos de uno de los polígonos de la matriz lpPoints
.
nCount
Número de entradas de la matriz lpPolyCounts
. Este número especifica el número de polígonos que se van a dibujar. Este valor debe ser al menos 2.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
Los polígonos pueden estar separados o superponerse.
Cada polígono especificado en una llamada a la función PolyPolygon
debe estar cerrado. A diferencia de los polígonos creados por la Polygon
función miembro, los polígonos creados por PolyPolygon
no se cierran automáticamente.
La función crea dos o más polígonos. Para crear un único polígono, una aplicación debe usar la función miembro Polygon
.
El modo de relleno de polígono actual se puede recuperar o establecer mediante las funciones miembro GetPolyFillMode
y SetPolyFillMode
.
CDC::PolyPolyline
Dibuja varias series de segmentos de línea conectados.
BOOL PolyPolyline(
const POINT* lpPoints,
const DWORD* lpPolyPoints,
int nCount);
Parámetros
lpPoints
Apunta a una matriz de estructuras que contiene los vértices de las Polilíneas. Las Polilíneas se especifican de forma consecutiva.
lpPolyPoints
Apunta a una matriz de variables que especifican el número de puntos de la matriz lpPoints
para el polígono correspondiente. Cada entrada debe ser mayor o igual que 2.
nCount
Especifica el número total de recuentos de la matriz lpPolyPoints
.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
Los segmentos de línea se dibujan mediante el lápiz actual. Las figuras formadas por los segmentos no se rellenan. Esta función no usa ni actualiza la posición actual.
CDC::PtVisible
Determina si el punto especificado está dentro de la zona de recorte del contexto de dispositivo.
virtual BOOL PtVisible(
int x,
int y) const;
BOOL PtVisible(POINT point) const;
Parámetros
x
Especifica la coordenada x lógica del punto.
y
Especifica la coordenada y lógica del punto.
point
Especifica el punto que se va a comprobar en coordenadas lógicas. Puede pasar una estructura POINT
o un objeto CPoint
para este parámetro.
Valor devuelto
Distinto de cero si el punto especificado está dentro de la zona de recorte; de lo contrario, 0.
CDC::QueryAbort
Llama a la función de anulación instalada por la función miembro SetAbortProc
para una aplicación de impresión y consulta si se debe finalizar la impresión.
BOOL QueryAbort() const;
Valor devuelto
El valor devuelto es distinto de cero si la impresión debe continuar o si no hay ningún procedimiento de anulación. Es 0 si se debe finalizar el trabajo de impresión. La función de anulación proporciona el valor devuelto.
CDC::RealizePalette
Asigna entradas de la paleta lógica actual a la paleta del sistema.
UINT RealizePalette();
Valor devuelto
Indica cuántas entradas de la paleta lógica se asignaron a diferentes entradas de la paleta del sistema. Representa el número de entradas que esta función reasignó para dar cabida a los cambios en la paleta del sistema desde que la paleta lógica se implementó por última vez.
Comentarios
Una paleta de colores lógica actúa como un búfer entre aplicaciones de uso intensivo de colores y el sistema, lo que permite que una aplicación use tantos colores como sea necesario sin interferir con los colores que muestra o con colores que muestran otras ventanas.
Cuando una ventana tiene el foco de entrada y llama a RealizePalette
, Windows garantiza que la ventana mostrará todos los colores solicitados, hasta el número máximo disponible simultáneamente en la pantalla. Windows también muestra los colores que no se encuentran en la paleta de la ventana. Para ello, los hace coincidir con los colores disponibles.
Además, Windows hace coincidir los colores solicitados por ventanas inactivas que llaman a la función lo más fielmente posible con los colores disponibles. Esto reduce considerablemente los cambios no deseados en los colores mostrados en ventanas inactivas.
CDC::Rectangle
Dibuja un rectángulo con el lápiz actual.
BOOL Rectangle(
int x1,
int y1,
int x2,
int y2);
BOOL Rectangle(LPCRECT lpRect);
Parámetros
x1
Especifica la coordenada x de la esquina superior izquierda del rectángulo (en unidades lógicas).
y1
Especifica la coordenada y de la esquina superior izquierda del rectángulo (en unidades lógicas).
x2
Especifica la coordenada x de la esquina inferior derecha del rectángulo (en unidades lógicas).
y2
Especifica la coordenada y de la esquina inferior derecha del rectángulo (en unidades lógicas).
lpRect
Especifica el rectángulo en unidades lógicas. Puede pasar un objeto CRect
o un puntero a una estructura RECT
para este parámetro.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
El interior del rectángulo se rellena con el pincel actual.
El rectángulo se extiende hasta, pero no incluye, las coordenadas derecha e inferior. Esto significa que el alto del rectángulo es y2
- y1
y su ancho, x2
- x1
. Tanto el ancho como el alto de un rectángulo deben tener más de 2 unidades y menos de 32 767.
Ejemplo
void CDCView::DrawRectangle(CDC *pDC)
{
// create and select a solid blue brush
CBrush brushBlue(RGB(0, 0, 255));
CBrush *pOldBrush = pDC->SelectObject(&brushBlue);
// create and select a thick, black pen
CPen penBlack;
penBlack.CreatePen(PS_SOLID, 3, RGB(0, 0, 0));
CPen *pOldPen = pDC->SelectObject(&penBlack);
// get our client rectangle
CRect rect;
GetClientRect(rect);
// shrink our rect 20 pixels in each direction
rect.DeflateRect(20, 20);
// draw a thick black rectangle filled with blue
pDC->Rectangle(rect);
// put back the old objects
pDC->SelectObject(pOldBrush);
pDC->SelectObject(pOldPen);
}
CDC::RectVisible
Determina si alguna parte del rectángulo especificado se encuentra dentro de la zona de recorte del contexto de visualización.
virtual BOOL RectVisible(LPCRECT lpRect) const;
Parámetros
lpRect
Apunta a una estructura RECT
o un objeto CRect
que contiene las coordenadas lógicas del rectángulo especificado.
Valor devuelto
Distinto de cero si alguna parte del rectángulo especificado se encuentra dentro de la zona de recorte; de lo contrario, 0.
CDC::ReleaseAttribDC
Llame a esta función miembro para establecer m_hAttribDC
en null.
virtual void ReleaseAttribDC();
Comentarios
Esto no hace que se produzca una Detach
acción. Solo el contexto de dispositivo de salida está asociado al objeto CDC
y solo este se puede desasociar.
CDC::ReleaseOutputDC
Llame a esta función miembro para establecer el miembro m_hDC
en NULL
.
virtual void ReleaseOutputDC();
Comentarios
No se puede llamar a esta función miembro cuando el contexto de dispositivo de salida está asociado al objeto CDC
. Use la función miembro Detach
para desasociar el contexto de dispositivo de salida.
CDC::ResetDC
Llame a esta función miembro para actualizar el contexto de dispositivo encapsulado por el objeto CDC
.
BOOL ResetDC(const DEVMODE* lpDevMode);
Parámetros
lpDevMode
Puntero a una estructura DEVMODE
de Windows.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
El contexto de dispositivo se actualiza a partir de la información especificada en la estructura DEVMODE
de Windows. Esta función miembro solo restablece el contexto de dispositivo de atributo.
Normalmente, una aplicación usará la función miembro ResetDC
cuando una ventana procese un mensaje WM_DEVMODECHANGE
. También se puede usar esta función miembro para cambiar la orientación del papel o las papeleras al imprimir un documento.
No se puede usar esta función miembro para cambiar el nombre del controlador, el nombre del dispositivo o el puerto de salida. Cuando el usuario cambia la conexión de puerto o el nombre del dispositivo, es necesario eliminar el contexto de dispositivo original y crear un contexto de dispositivo con la nueva información.
Antes de llamar a esta función miembro, hay que asegurarse de que se han deseleccionado todos los objetos (menos los objetos estándar) que se habían seleccionado en el contexto de dispositivo.
CDC::RestoreDC
Restaura el contexto de dispositivo al estado anterior identificado por nSavedDC
.
virtual BOOL RestoreDC(int nSavedDC);
Parámetros
nSavedDC
Especifica el contexto de dispositivo que debe restaurarse. Puede ser un valor devuelto por una llamada a la función SaveDC
anterior. Si nSavedDC
es -1, se restaura el contexto de dispositivo guardado más recientemente.
Valor devuelto
Distinto de cero si se restauró el contexto especificado; de lo contrario, 0.
Comentarios
RestoreDC
restaura el contexto de dispositivo. Para ello, quita la información de estado de una pila creada por llamadas anteriores a la función miembro SaveDC
.
La pila puede contener información de estado de varios contextos de dispositivo. Si el contexto especificado por nSavedDC
no está en la parte superior de la pila, RestoreDC
elimina toda la información de estado entre el contexto del dispositivo especificado por nSavedDC
y la parte superior de la pila. La información eliminada se pierde.
CDC::RoundRect
Dibuja un rectángulo con esquinas redondeadas con el lápiz actual.
BOOL RoundRect(
int x1,
int y1,
int x2,
int y2,
int x3,
int y3);
BOOL RoundRect(
LPCRECT lpRect,
POINT point);
Parámetros
x1
Especifica la coordenada x de la esquina superior izquierda del rectángulo (en unidades lógicas).
y1
Especifica la coordenada y de la esquina superior izquierda del rectángulo (en unidades lógicas).
x2
Especifica la coordenada x de la esquina inferior derecha del rectángulo (en unidades lógicas).
y2
Especifica la coordenada y de la esquina inferior derecha del rectángulo (en unidades lógicas).
x3
Especifica el ancho de la elipse que se usa para dibujar las esquinas redondeadas (en unidades lógicas).
y3
Especifica el alto de la elipse que se usa para dibujar las esquinas redondeadas (en unidades lógicas).
lpRect
Especifica el rectángulo delimitador en unidades lógicas. Puede pasar un objeto CRect
o un puntero a una estructura RECT
para este parámetro.
point
La coordenada x de point
especifica el ancho de la elipse que se usa para dibujar las esquinas redondeadas (en unidades lógicas). La coordenada y de point
especifica el alto de la elipse que se usa para dibujar las esquinas redondeadas (en unidades lógicas). Puede pasar una estructura POINT
o un objeto CPoint
para este parámetro.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
El interior del rectángulo se rellena con el pincel actual.
La figura que dibuja esta función se extiende hasta, pero no incluye las coordenadas derecha e inferior. Esto significa que el alto de la figura es y2
- y1
y el ancho es x2
- x1
. Tanto el alto como el ancho del rectángulo delimitador deben tener más de 2 unidades y menos de 32 767.
Ejemplo
void CDCView::DrawRoundRect(CDC *pDC)
{
// create and select a solid blue brush
CBrush brushBlue(RGB(0, 0, 255));
CBrush *pOldBrush = pDC->SelectObject(&brushBlue);
// create and select a thick, black pen
CPen penBlack;
penBlack.CreatePen(PS_SOLID, 3, RGB(0, 0, 0));
CPen *pOldPen = pDC->SelectObject(&penBlack);
// get our client rectangle
CRect rect;
GetClientRect(rect);
// shrink our rect 20 pixels in each direction
rect.DeflateRect(20, 20);
// Draw a thick black rectangle filled with blue
// corners rounded at a 17-unit radius. Note that
// a radius of three or less is not noticeable because
// the pen is three units wide.
pDC->RoundRect(rect, CPoint(17, 17));
// put back the old objects
pDC->SelectObject(pOldBrush);
pDC->SelectObject(pOldPen);
}
CDC::SaveDC
Guarda el estado actual del contexto de dispositivo. Para ello, copia información de estado (como la zona de recorte, los objetos seleccionados y el modo de asignación) en una pila de contexto mantenida por Windows.
virtual int SaveDC();
Valor devuelto
Un entero que identifica el contexto de dispositivo guardado. Es 0 si se produce un error. Este valor devuelto se puede usar para restaurar el contexto de dispositivo mediante una llamada a RestoreDC
.
Comentarios
El contexto de dispositivo guardado se puede restaurar más adelante mediante RestoreDC
.
SaveDC
se puede usar cualquier número de veces para guardar cualquier número de estados de contexto de dispositivo.
CDC::ScaleViewportExt
Modifica las extensiones del área de visualización en relación con los valores actuales.
virtual CSize ScaleViewportExt(
int xNum,
int xDenom,
int yNum,
int yDenom);
Parámetros
xNum
Especifica la cantidad por la que se va a multiplicar la extensión x actual.
xDenom
Especifica la cantidad por la que se va a dividir el resultado de multiplicar la extensión x actual por el valor del parámetro xNum
.
yNum
Especifica la cantidad por la que se va a multiplicar la extensión y actual.
yDenom
Especifica la cantidad por la que se va a dividir el resultado de multiplicar la extensión y actual por el valor del parámetro yNum
.
Valor devuelto
Las extensiones del área de visualización anteriores (en unidades de dispositivo) como un objeto CSize
.
Comentarios
Las fórmulas se escriben de la manera siguiente:
xNewVE = ( xOldVE * xNum ) / xDenom
yNewVE = ( yOldVE * yNum ) / yDenom
Las nuevas extensiones del área de visualización se calculan multiplicando las extensiones actuales por el numerador especificado y dividiendo por el denominador especificado.
CDC::ScaleWindowExt
Modifica las extensiones de la ventana en relación con los valores actuales.
virtual CSize ScaleWindowExt(
int xNum,
int xDenom,
int yNum,
int yDenom);
Parámetros
xNum
Especifica la cantidad por la que se va a multiplicar la extensión x actual.
xDenom
Especifica la cantidad por la que se va a dividir el resultado de multiplicar la extensión x actual por el valor del parámetro xNum
.
yNum
Especifica la cantidad por la que se va a multiplicar la extensión y actual.
yDenom
Especifica la cantidad por la que se va a dividir el resultado de multiplicar la extensión y actual por el valor del parámetro yNum
.
Valor devuelto
Las extensiones del área de visualización anterior (en unidades lógicas) como un objeto CSize
.
Comentarios
Las fórmulas se escriben de la manera siguiente:
xNewWE = ( xOldWE * xNum ) / xDenom
yNewWE = ( yOldWE * yNum ) / yDenom
Las nuevas extensiones de la ventana se calculan multiplicando las extensiones actuales por el numerador especificado y dividiendo por el denominador especificado.
CDC::ScrollDC
Desplaza un rectángulo de bits horizontal y verticalmente.
BOOL ScrollDC(
int dx,
int dy,
LPCRECT lpRectScroll,
LPCRECT lpRectClip,
CRgn* pRgnUpdate,
LPRECT lpRectUpdate);
Parámetros
dx
Especifica el número de unidades de desplazamiento horizontal.
dy
Especifica el número de unidades de desplazamiento vertical.
lpRectScroll
Apunta a la estructura RECT
o el objeto CRect
que contiene las coordenadas del rectángulo de desplazamiento.
lpRectClip
Apunta a la estructura RECT
o el objeto CRect
que contiene las coordenadas del rectángulo de recorte. Cuando este rectángulo es menor que el original al que apunta lpRectScroll
, el desplazamiento solo se produce en el rectángulo más pequeño.
pRgnUpdate
Identifica la región revelada por el proceso de desplazamiento. La ScrollDC
función define esta región; no es necesariamente un rectángulo.
lpRectUpdate
Apunta a la estructura RECT
o el objeto CRect
que recibe las coordenadas del rectángulo que rodea la región de actualización del desplazamiento. Es el área rectangular más grande que hay que volver a pintar. Los valores de la estructura u objeto cuando se devuelve la función están en coordenadas cliente, independientemente del modo de asignación del contexto de dispositivo determinado.
Valor devuelto
Distinto de cero si se ejecuta el desplazamiento; de lo contrario, 0.
Comentarios
Si lpRectUpdate
es NULL
, Windows no calcula el rectángulo de actualización. Si y pRgnUpdate
lpRectUpdate
son NULL
, Windows no calcula la región de actualización. Si pRgnUpdate
no NULL
es , Windows da por hecho que contiene un puntero válido a la región descubierta por el proceso de desplazamiento (definido por la ScrollDC
función miembro). La región de actualización devuelta en lpRectUpdate
se puede pasar a CWnd::InvalidateRgn
si es necesario.
Una aplicación debe usar la ScrollWindow
función miembro de la clase CWnd
cuando sea necesario desplazar todo el área de cliente de una ventana. De lo contrario, debe usar ScrollDC
.
CDC::SelectClipPath
Selecciona el trazado actual como zona de recorte para el contexto de dispositivo, y combina la nueva región con cualquier zona de recorte existente mediante el modo especificado.
BOOL SelectClipPath(int nMode);
Parámetros
nMode
Especifica la forma de usar el trazado. Se admiten los valores siguientes:
RGN_AND
: la nueva zona de recorte incluye la intersección (las áreas superpuestas) de la zona de recorte actual y el trazado actual.RGN_COPY
: la nueva zona de recorte es el trazado actual.RGN_DIFF
: la nueva zona de recorte incluye las áreas de la zona de recorte actual, y las del trazado actual se excluyen.RGN_OR
: la nueva zona de recorte incluye la unión (las áreas combinadas) de la zona de recorte actual y el trazado actual.RGN_XOR
: la nueva zona de recorte incluye la unión de la zona de recorte actual y el trazado actual, pero sin las áreas superpuestas.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
El contexto de dispositivo identificado debe contener un trazado cerrado.
CDC::SelectClipRgn
Selecciona la región especificada como la zona de recorte actual para el contexto de dispositivo.
int SelectClipRgn(CRgn* pRgn);
int SelectClipRgn(
CRgn* pRgn,
int nMode);
Parámetros
pRgn
Identifica la región que se va a seleccionar.
Para la primera versión de esta función, si este valor es
NULL
, se selecciona toda el área cliente y la salida sigue recortándose en la ventana.Para la segunda versión de esta función, este identificador puede ser
NULL
solo cuando se especifica el modoRGN_COPY
.
nMode
Especifica la operación que se va a realizar. Debe tener uno de los siguientes valores:
RGN_AND
: la nueva zona de recorte combina las áreas superpuestas de la zona de recorte actual y la región identificada porpRgn
.RGN_COPY
: la nueva zona de recorte es una copia de la región identificada porpRgn
. Esta funcionalidad es idéntica a la primera versión deSelectClipRgn
. Si la región identificada porpRgn
esNULL
, la nueva zona de recorte se convierte en la zona de recorte predeterminada (una región nula).RGN_DIFF
: la nueva zona de recorte combina las áreas de la zona de recorte actual con esas áreas excluidas de la región identificada porpRgn
.RGN_OR
: la nueva zona de recorte combina la zona de recorte actual y la región identificada porpRgn
.RGN_XOR
: la nueva zona de recorte combina la zona de recorte actual y la región identificada porpRgn
, pero excluye las áreas superpuestas.
Valor devuelto
El tipo de la región. Puede ser cualquiera de los siguientes valores:
COMPLEXREGION
: la nueva zona de recorte tiene bordes superpuestos.ERROR
El contexto o la región del dispositivo no son válidos.NULLREGION
: la nueva zona de recorte está vacía.SIMPLEREGION
: la nueva zona de recorte no tiene bordes superpuestos.
Comentarios
Solo se usa una copia de la región seleccionada. La propia región puede seleccionarse para cualquier número de otros contextos de dispositivo, o bien puede eliminarse.
La función da por supuesto que las coordenadas de la región especificada se especifican en unidades de dispositivo. Algunos dispositivos de impresora admiten la salida de texto en una resolución superior a la salida de gráficos para conservar la precisión necesaria para expresar las métricas de texto. Estos dispositivos notifican unidades de dispositivo en la resolución más alta, es decir, en unidades de texto. A continuación, estos dispositivos escalan las coordenadas de los gráficos para que varias unidades de dispositivo notificadas se asignen únicamente a una unidad gráfica. Siempre se debe llamar a la función SelectClipRgn
mediante unidades de texto.
Las aplicaciones que deben tomar el escalado de objetos gráficos en GDI pueden usar el escape de impresora GETSCALINGFACTOR
para determinar el factor de escalado. Este factor de escalado afecta al recorte. Si se usa una región para recortar gráficos, GDI divide las coordenadas por el factor de escalado. Si la región se usa para recortar texto, GDI no realiza ningún ajuste de escalado. Un factor de escalado de 1 hace que las coordenadas se dividan entre 2; un factor de escalado de 2 hace que las coordenadas se dividan entre 4; y así sucesivamente.
CDC::SelectObject
Selecciona un objeto en el contexto de dispositivo.
CPen* SelectObject(CPen* pPen);
CBrush* SelectObject(CBrush* pBrush);
virtual CFont* SelectObject(CFont* pFont);
CBitmap* SelectObject(CBitmap* pBitmap);
int SelectObject(CRgn* pRgn);
CGdiObject* SelectObject(CGdiObject* pObject);
Parámetros
pPen
Puntero a un objeto CPen
que se va a seleccionar.
pBrush
Puntero a un objeto CBrush
que se va a seleccionar.
pFont
Puntero a un objeto CFont
que se va a seleccionar.
pBitmap
Puntero a un objeto CBitmap
que se va a seleccionar.
pRgn
Puntero a un objeto CRgn
que se va a seleccionar.
pObject
Puntero a un objeto CGdiObject
que se va a seleccionar.
Valor devuelto
Un puntero al objeto que se va a reemplazar. Se trata de un puntero a un objeto de una de las clases derivadas de CGdiObject
, como CPen
, según qué versión de la función se use. El valor devuelto es NULL
si se produce un error. Esta función puede devolver un puntero a un objeto temporal. Este objeto temporal solo es válido durante el procesamiento de un mensaje de Windows. Para obtener más información, vea CGdiObject::FromHandle
.
La versión de la función miembro que toma un parámetro de región realiza la misma tarea que la función miembro SelectClipRgn
. Su valor devuelto puede ser cualquiera de los siguientes:
COMPLEXREGION
: la nueva zona de recorte tiene bordes superpuestos.ERROR
El contexto o la región del dispositivo no son válidos.NULLREGION
: la nueva zona de recorte está vacía.SIMPLEREGION
: la nueva zona de recorte no tiene bordes superpuestos.
Comentarios
La clase CDC
proporciona cinco versiones especializadas para determinados tipos de objetos de GDI, incluidos lápices, pinceles, fuentes, mapas de bits y regiones. El objeto recién seleccionado reemplaza al objeto anterior del mismo tipo. Por ejemplo, si el objeto pObject
de la versión general de SelectObject
apunta a un objeto CPen
, la función reemplaza el lápiz actual por el lápiz especificado por pObject
.
Una aplicación solo puede seleccionar un mapa de bits en contextos de dispositivo de memoria y solo en un contexto de dispositivo de memoria de cada vez. El formato del mapa de bits debe ser monocromo o ser compatible con el contexto del dispositivo; Si no es así, SelectObject
devuelve un error.
Para Windows 3.1 y versiones posteriores, la SelectObject
función devuelve el mismo valor si se usa en un metarchivo o no. En versiones anteriores de Windows, SelectObject
devolvía un valor distinto de cero en caso de que la operación se realizase correctamente y 0 en caso de que se produjese un error al usarse en un metarchivo.
CDC::SelectPalette
Selecciona la paleta lógica especificada por pPalette
como el objeto de paleta seleccionado del contexto de dispositivo.
CPalette* SelectPalette(
CPalette* pPalette,
BOOL bForceBackground);
Parámetros
pPalette
Identifica la paleta lógica que se va a seleccionar. Esta paleta ya debe haberse creado con la función miembro CreatePalette
de CPalette
.
bForceBackground
Especifica si se obliga a que la paleta lógica sea una paleta de fondo. Si bForceBackground
es distinto de cero, la paleta seleccionada es siempre una paleta de fondo, independientemente de si la ventana tiene el foco de entrada. Si bForceBackground
es 0 y el contexto de dispositivo está asociado a una ventana, la paleta lógica es una paleta de primer plano cuando la ventana tiene el foco de entrada.
Valor devuelto
Un puntero a un objeto CPalette
que identifica la paleta lógica reemplazada por la paleta que se especifica mediante pPalette
. NULL
Es si hay un error.
Comentarios
La nueva paleta se convierte en el objeto de paleta que GDI usa para controlar los colores que se muestran en el contexto de dispositivo y reemplaza la paleta anterior.
Una aplicación puede seleccionar una paleta lógica en más de un contexto de dispositivo. Sin embargo, los cambios en una paleta lógica afectarán a todos los contextos de dispositivo para los que está seleccionado. Si una aplicación selecciona una paleta en más de un contexto de dispositivo, todos los contextos de dispositivo deben pertenecer al mismo dispositivo físico.
CDC::SelectStockObject
Selecciona un objeto CGdiObject
que se corresponde con uno de los lápices, pinceles o fuentes predefinidos.
virtual CGdiObject* SelectStockObject(int nIndex);
Parámetros
nIndex
Especifica el tipo de objeto estándar deseado. Puede ser uno de los siguientes valores:
BLACK_BRUSH
: pincel negro.DKGRAY_BRUSH
: pincel gris oscuro.GRAY_BRUSH
: pincel gris.HOLLOW_BRUSH
: pincel hueco.LTGRAY_BRUSH
: pincel gris claro.NULL_BRUSH
: pincel nulo.WHITE_BRUSH
: pincel blanco.BLACK_PEN
: lápiz negro.NULL_PEN
: lápiz nulo.WHITE_PEN
: lápiz blanco.ANSI_FIXED_FONT
: fuente fija del sistema ANSI.ANSI_VAR_FONT
: fuente variable del sistema ANSI.DEVICE_DEFAULT_FONT
: fuente dependiente del dispositivo.OEM_FIXED_FONT
: fuente fija dependiente del OEM.SYSTEM_FONT
: fuente del sistema. De forma predeterminada, Windows usa la fuente del sistema para dibujar menús, controles de cuadro de diálogo y otro texto. Sin embargo, es mejor no confiar enSYSTEM_FONT
para obtener la fuente usada por cuadros de diálogo y ventanas. En su lugar, use la funciónSystemParametersInfo
con el parámetroSPI_GETNONCLIENTMETRICS
para recuperar la fuente actual.SystemParametersInfo
tiene en cuenta el tema actual y proporciona información de fuente para títulos, menús y cuadros de diálogo de mensaje.SYSTEM_FIXED_FONT
: fuente del sistema de ancho fijo usada en Windows antes de la versión 3.0. Este objeto está disponible para la compatibilidad con versiones anteriores de Windows.DEFAULT_PALETTE
: paleta de colores predeterminada. Esta paleta consta de los 20 colores estáticos de la paleta del sistema.
Valor devuelto
Un puntero al objeto CGdiObject
que se reemplazó si la función se realizó correctamente. El objeto real al que se apunta es un objeto CPen
, CBrush
o CFont
. Si la llamada no se realiza correctamente, el valor devuelto es null.
CDC::SetAbortProc
Instala el procedimiento de anulación para el trabajo de impresión.
int SetAbortProc(BOOL (CALLBACK* lpfn)(HDC, int));
Parámetros
lpfn
Puntero a la función de anulación que se va a instalar como procedimiento de anulación. Para obtener más información sobre la función de devolución de llamada, consulte Función de devolución de llamada para CDC::SetAbortProc
.
Valor devuelto
Especifica el resultado de la función SetAbortProc
. Algunos de los valores siguientes son más probables que otros, pero todos son posibles.
SP_ERROR
: error general.SP_OUTOFDISK
: no hay suficiente espacio en disco disponible actualmente para la cola y no habrá más espacio disponible.SP_OUTOFMEMORY
: no hay suficiente memoria disponible para la cola.SP_USERABORT
: el usuario finalizó el trabajo con el Administrador de impresión.
Comentarios
Si una aplicación va a permitir que el trabajo de impresión se cancele durante la cola, debe establecer la función de anulación antes de que se inicie el trabajo de impresión con la función miembro StartDoc
. El Administrador de impresión llama a la función de anulación durante la cola para permitir que la aplicación cancele el trabajo de impresión o procese condiciones de espacio insuficiente en disco. Si no se establece ninguna función de anulación, se producirá un error en el trabajo de impresión si no hay suficiente espacio en disco para la cola.
Las características de Microsoft Visual C++ simplifican la creación de la función de devolución de llamada que se pasa a SetAbortProc
. La dirección que se pasa a la función miembro EnumObjects
es un puntero a una función exportada con __declspec(dllexport)
y con la convención de llamada __stdcall
.
Tampoco es necesario exportar el nombre de la función en una EXPORTS
instrucción en el archivo de definición de módulo de la aplicación. En su lugar, puede usar el modificador de función EXPORT
, como en
BOOL CALLBACK EXPORT AFunction( HDC, int );
para que el compilador emita el registro de exportación adecuado para la exportación por nombre sin alias. Esto funciona para la mayoría de las necesidades. En algunos casos especiales, como la exportación de una función por ordinal o mediante la creación de un alias para la exportación, sigue siendo necesario usar una instrucción EXPORTS
en un archivo de definición de módulo.
Las interfaces de registro de devolución de llamada ahora son seguras para tipos (debe pasar un puntero de función que apunte al tipo correcto de función para la devolución de llamada específica).
Todas las funciones de devolución de llamada deben interceptar las excepciones de Microsoft Foundation antes de volver a Windows, ya que no se pueden producir excepciones a través de los límites de devolución de llamada. Para obtener más información sobre las excepciones, consulte el artículo Excepciones.
CDC::SetArcDirection
Establece la dirección de dibujo que se va a usar para las funciones de arco y rectángulo.
int SetArcDirection(int nArcDirection);
Parámetros
nArcDirection
Especifica la nueva dirección del arco. Este parámetro puede tener uno de los valores siguientes:
AD_COUNTERCLOCKWISE
: figuras dibujadas en sentido contrario a las agujas del reloj.AD_CLOCKWISE
: figuras dibujadas en el sentido de las agujas del reloj.
Valor devuelto
Especifica la dirección del arco anterior, si es correcta; de lo contrario, 0.
Comentarios
La dirección predeterminada es en el sentido contrario a las agujas del reloj. La función SetArcDirection
especifica la dirección en la que dibujan las funciones siguientes:
Arc | Circular |
---|---|
ArcTo |
Rectangle |
Chord |
RoundRect |
Ellipse |
CDC::SetAttribDC
Llame a esta función para establecer el contexto de dispositivo de atributo, m_hAttribDC
.
virtual void SetAttribDC(HDC hDC);
Parámetros
hDC
Un contexto de dispositivo de Windows.
Comentarios
Esta función miembro no asocia el contexto del dispositivo al CDC
objeto . Solo el contexto de dispositivo de salida está asociado a un objeto CDC
.
CDC::SetBkColor
Establece el color de fondo actual en el color especificado.
virtual COLORREF SetBkColor(COLORREF crColor);
Parámetros
crColor
Especifica el nuevo color de fondo.
Valor devuelto
El color de fondo anterior como un valor de color RGB. Si se produce un error, el valor devuelto es 0x80000000.
Comentarios
Si el modo de fondo es OPAQUE
, el sistema usa el color de fondo para rellenar los huecos en las líneas con estilo, los huecos entre las líneas sombreadas en pinceles y el fondo en las celdas de caracteres. El sistema también usa el color de fondo al convertir mapas de bits entre contextos de dispositivo monocromáticos y de color.
Si el dispositivo no puede mostrar el color especificado, el sistema establece el color de fondo en el color físico más cercano.
CDC::SetBkMode
Establece el modo de fondo.
int SetBkMode(int nBkMode);
Parámetros
nBkMode
Especifica el modo que se va a establecer. Este parámetro puede tener uno de los valores siguientes:
OPAQUE
: el fondo se rellena con el color de fondo actual antes de que se dibuje el texto, el pincel sombreado o el lápiz. Este es el modo de fondo predeterminado.TRANSPARENT
El fondo no se cambia antes de dibujar.
Valor devuelto
El modo de fondo anterior.
Comentarios
El modo de fondo define si el sistema quita los colores de fondo existentes en la superficie de dibujo antes de dibujar texto, pinceles sombreados o cualquier estilo de lápiz que no sea una línea sólida.
Ejemplo
Vea el ejemplo de CWnd::OnCtlColor
.
CDC::SetBoundsRect
Controla la acumulación de información del rectángulo delimitador para el contexto de dispositivo especificado.
UINT SetBoundsRect(
LPCRECT lpRectBounds,
UINT flags);
Parámetros
lpRectBounds
Apunta a una estructura RECT
u objeto CRect
que se usa para establecer el rectángulo delimitador. Las dimensiones de rectángulo se proporcionan en coordenadas lógicas. Este parámetro puede ser NULL
.
flags
Especifica cómo se combinará el nuevo rectángulo con el rectángulo acumulado. Este parámetro puede ser una combinación de los siguientes valores:
DCB_ACCUMULATE
: agrega el rectángulo especificado porlpRectBounds
al rectángulo delimitador (mediante una operación de unión de rectángulo).DCB_DISABLE
: desactiva la acumulación de límites.DCB_ENABLE
: activa la acumulación de límites. (El valor predeterminado para la acumulación de límites es deshabilitado).
Valor devuelto
El estado actual del rectángulo delimitador si la función se realiza correctamente. Al igual que flags
, el valor devuelto puede ser una combinación de valores DCB_
:
DCB_ACCUMULATE
El rectángulo delimitador no está vacío. Este valor siempre se establecerá.DCB_DISABLE
: la acumulación de límites está desactivada.DCB_ENABLE
: la acumulación de límites está activada.
Comentarios
Windows puede mantener un rectángulo delimitador para todas las operaciones de dibujo. La aplicación puede consultar y restablecer este rectángulo. Los límites de dibujo son útiles para invalidar las memorias caché de mapa de bits.
CDC::SetBrushOrg
Especifica el origen que GDI asignará al siguiente pincel que la aplicación seleccione en el contexto de dispositivo.
CPoint SetBrushOrg(
int x,
int y);
CPoint SetBrushOrg(POINT point);
Parámetros
x
Especifica la coordenada x (en unidades de dispositivo) del nuevo origen. Este valor debe estar comprendido entre 0 y 7.
y
Especifica la coordenada y (en unidades de dispositivo) del nuevo origen. Este valor debe estar comprendido entre 0 y 7.
point
Especifica las coordenadas x e y del nuevo origen. Cada valor debe estar comprendido entre 0 y 7. Puede pasar una estructura POINT
o un objeto CPoint
para este parámetro.
Valor devuelto
El origen anterior del pincel en unidades de dispositivo.
Comentarios
Las coordenadas predeterminadas para el origen del pincel son (0, 0). Para modificar el origen de un pincel, llame a la función UnrealizeObject
para el objeto CBrush
, llame a SetBrushOrg
y, luego, llame a la función miembro SelectObject
para seleccionar el pincel en el contexto de dispositivo.
No use SetBrushOrg
con objetos stock CBrush
.
CDC::SetColorAdjustment
Establece los valores de ajuste de color para el contexto de dispositivo mediante los valores especificados.
BOOL SetColorAdjustment(const COLORADJUSTMENT* lpColorAdjust);
Parámetros
lpColorAdjust
Apunta a una estructura de datos COLORADJUSTMENT
que contiene los valores de ajuste de color.
Valor devuelto
Si es correcta, su valor es distinto de cero. En caso contrario, es cero.
Comentarios
Los valores de ajuste de color se usan para ajustar el color de entrada del mapa de bits de origen para las llamadas a la función miembro CDC::StretchBlt
cuando se establece el modo HALFTONE
.
CDC::SetDCBrushColor
Establece el color del pincel del contexto de dispositivo (DC) actual en el valor de color especificado.
COLORREF SetDCBrushColor(COLORREF crColor);
Parámetros
crColor
Especifica el nuevo color del pincel.
Valor devuelto
Si la función se ejecuta correctamente, el valor devuelto especifica el color del pincel del contexto de dispositivo anterior como un valor COLORREF
.
Si la función produce un error, el valor devuelto es CLR_INVALID
.
Comentarios
Este método emula la funcionalidad de la función SetDCBrushColor
, tal y como se describe en Windows SDK.
CDC::SetDCPenColor
Establece el color del lápiz del contexto de dispositivo (DC) actual en el valor de color especificado.
COLORREF SetDCPenColor(COLORREF crColor);
Parámetros
crColor
Especifica el nuevo color del lápiz.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
Esta función miembro usa la función SetDCPenColor
de Win32, como se describe en Windows SDK.
CDC::SetGraphicsMode
Establece el modo gráfico para el contexto de dispositivo especificado.
int SetGraphicsMode(int iMode);
Parámetros
iMode
Especifica el modo gráfico. Para obtener una lista de los valores que puede tomar este parámetro, consulte SetGraphicsMode
.
Valor devuelto
Devuelve el modo gráfico anterior si se ejecuta correctamente.
Devuelve 0 en caso de error. Para obtener información de errores extendida, realice una llamada a GetLastError
.
Comentarios
Este método encapsula la función GDI de Windows SetGraphicsMode
.
CDC::SetLayout
Llame a esta función miembro para cambiar el diseño del texto y los gráficos de un contexto de dispositivo al diseño de derecha a izquierda, que es el estándar de referencias culturales como árabe y hebreo.
DWORD SetLayout(DWORD dwLayout);
Parámetros
dwLayout
Diseño de contexto de dispositivo y marcas de control de mapa de bits. Puede ser una combinación de los valores siguientes.
Valor | Significado |
---|---|
LAYOUT_BITMAPORIENTATIONPRESERVED |
Deshabilita cualquier reflexión para las llamadas a CDC::BitBlt y CDC::StretchBlt . |
LAYOUT_RTL |
Establece que el diseño horizontal predeterminado es de derecha a izquierda. |
LAYOUT_LTR |
Establece que el diseño predeterminado es de izquierda a derecha. |
Valor devuelto
Si se ejecuta correctamente, el diseño anterior del contexto de dispositivo.
Si no se realiza correctamente, GDI_ERROR
. Para obtener información de errores extendida, realice una llamada a GetLastError
.
Comentarios
Normalmente, no llamaría a SetLayout
para una ventana. En su lugar, puede controlar el diseño de derecha a izquierda en una ventana mediante el establecimiento de estilos de ventana extendidos, como WS_EX_RTLREADING
. Un contexto de dispositivo, como una impresora o un metarchivo, no hereda este diseño. La única manera de establecer el contexto de dispositivo para un diseño de derecha a izquierda es llamar a SetLayout
.
Si llama a SetLayout(LAYOUT_RTL)
, SetLayout
cambia automáticamente el modo de asignación a MM_ISOTROPIC
. Como resultado, una llamada posterior a GetMapMode
devolverá MM_ISOTROPIC
en lugar de MM_TEXT
.
En algunos casos, como sucede con muchos mapas de bits, puede que le interese conservar el diseño de izquierda a derecha. En estos casos, represente la imagen mediante una llamada a BitBlt
o StretchBlt
y, luego, establezca la marca de control de mapa de bits para dwLayout
en LAYOUT_BITMAPORIENTATIONPRESERVED
.
Una vez que cambie el diseño con la marca LAYOUT_RTL
, las marcas que normalmente especifican la derecha o la izquierda se invierten. Para evitar confusiones, es posible que quiera definir nombres alternativos para las marcas estándar. Para obtener una lista de los nombres de marca alternativos sugeridos, consulte SetLayout
en Windows SDK.
CDC::SetMapMode
Establece el modo de asignación.
virtual int SetMapMode(int nMapMode);
Parámetros
nMapMode
Especifica el nuevo modo de asignación. Puede tener cualquiera de los valores siguientes:
MM_ANISOTROPIC
: las unidades lógicas se convierten en unidades arbitrarias con ejes escalados arbitrariamente. Establecer el modo de asignación enMM_ANISOTROPIC
no cambia la ventana actual ni la configuración de la ventanilla. Para cambiar las unidades, la orientación y el escalado, llame a las funciones miembroSetWindowExt
ySetViewportExt
.MM_HIENGLISH
: cada unidad lógica se convierte en 0,001 pulgadas. La x positiva está a la derecha, mientras que la y positiva está arriba.MM_HIMETRIC
: cada unidad lógica se convierte en 0,01 milímetros. La x positiva está a la derecha, mientras que la y positiva está arriba.MM_ISOTROPIC
: las unidades lógicas se convierten en unidades arbitrarias con ejes con un escalado equivalente; es decir, 1 unidad a lo largo del eje x es igual a 1 unidad a lo largo del eje y. Use las funciones miembroSetWindowExt
ySetViewportExt
para especificar las unidades deseadas y la orientación de los ejes. GDI realiza ajustes según sea necesario para asegurarse de que las unidades x e y sigan siendo del mismo tamaño.MM_LOENGLISH
: cada unidad lógica se convierte en 0,01 pulgadas. La x positiva está a la derecha, mientras que la y positiva está arriba.MM_LOMETRIC
: cada unidad lógica se convierte en 0,1 milímetros. La x positiva está a la derecha, mientras que la y positiva está arriba.MM_TEXT
: cada unidad lógica se convierte en 1 píxel del dispositivo. La x positiva está a la derecha, mientras que la y positiva está abajo.MM_TWIPS
: cada unidad lógica se convierte en 1/20 de un punto. (Dado que un punto es 1/72 de pulgada, un twip es 1/1440 de pulgada). La x positiva está a la derecha; mientras que la y positiva está arriba.
Valor devuelto
El modo de asignación anterior.
Comentarios
El modo de asignación define la unidad de medida usada para convertir unidades lógicas en unidades de dispositivo; también define la orientación de los ejes x e y del dispositivo. GDI usa el modo de asignación para convertir las coordenadas lógicas en las coordenadas de dispositivo adecuadas. El modo MM_TEXT
permite que las aplicaciones funcionen en píxeles del dispositivo, donde 1 unidad es igual a 1 píxel. El tamaño físico de un píxel varía de un dispositivo a otro.
Los modos MM_HIENGLISH
, MM_HIMETRIC
, MM_LOENGLISH
, MM_LOMETRIC
y MM_TWIPS
son útiles para las aplicaciones que deben dibujar en unidades físicamente significativas (como pulgadas o milímetros). El MM_ISOTROPIC
modo garantiza una relación de aspecto 1:1, que es útil cuando es importante conservar la forma exacta de una imagen. El modo MM_ANISOTROPIC
permite ajustar las coordenadas x e y de forma independiente.
Nota:
Si llama a SetLayout
para cambiar el contexto de dispositivo a un diseño de derecha a izquierda, SetLayout
cambia automáticamente el modo de asignación a MM_ISOTROPIC
.
Ejemplo
Vea el ejemplo de CView::OnPrepareDC
.
CDC::SetMapperFlags
Cambia el método usado por el asignador de fuentes cuando convierte una fuente lógica en una fuente física.
DWORD SetMapperFlags(DWORD dwFlag);
Parámetros
dwFlag
Especifica si el asignador de fuentes intenta hacer coincidir el alto y el ancho de aspecto de una fuente con los del dispositivo. Cuando este valor es ASPECT_FILTERING
, el asignador selecciona solo las fuentes cuyo aspecto x e y coinciden exactamente con los del dispositivo especificado.
Valor devuelto
El valor anterior de la marca del asignador de fuentes.
Comentarios
Una aplicación puede usar SetMapperFlags
para hacer que el asignador de fuentes intente elegir solo una fuente física que coincida exactamente con la relación de aspecto del dispositivo especificado.
Una aplicación que solo usa fuentes de trama puede usar la función SetMapperFlags
para asegurarse de que la fuente seleccionada por el asignador de fuentes es atractiva y legible en el dispositivo especificado. Las aplicaciones que usan fuentes escalables (TrueType) normalmente no usan SetMapperFlags
.
Si ninguna fuente física tiene una relación de aspecto que coincida con la especificación de la fuente lógica, GDI elige una nueva relación de aspecto y selecciona una fuente que coincida con esta nueva relación de aspecto.
CDC::SetMiterLimit
Establece el límite de la longitud de las uniones angulares para el contexto de dispositivo.
BOOL SetMiterLimit(float fMiterLimit);
Parámetros
fMiterLimit
Especifica el nuevo límite angular para el contexto de dispositivo.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
La longitud del ángulo se define como la distancia desde la intersección de las paredes de la línea en el interior de la unión hasta la intersección de las paredes de la línea en el exterior de la unión. El límite angular es la relación máxima permitida de la longitud del ángulo con el ancho de la línea. El límite angular predeterminado es 10,0.
CDC::SetOutputDC
Llame a esta función miembro para establecer el contexto de dispositivo de salida, m_hDC
.
virtual void SetOutputDC(HDC hDC);
Parámetros
hDC
Un contexto de dispositivo de Windows.
Comentarios
Solo se puede llamar a esta función miembro cuando no se ha asociado un contexto de dispositivo al objeto CDC
. Esta función miembro establece m_hDC
pero no asocia el contexto del dispositivo al CDC
objeto .
CDC::SetPixel
Establece el píxel del punto especificado en la aproximación más cercana al color especificado por crColor
.
COLORREF SetPixel(
int x,
int y,
COLORREF crColor);
COLORREF SetPixel(
POINT point,
COLORREF crColor);
Parámetros
x
Especifica la coordenada x lógica del punto que se va a establecer.
y
Especifica la coordenada y lógica del punto que se va a establecer.
crColor
Valor RGB COLORREF
que especifica el color usado para pintar el punto. Consulte COLORREF
en Windows SDK para ver una descripción de este valor.
point
Especifica las coordenadas x e y lógicas del punto que se va a establecer. Puede pasar una estructura POINT
o un objeto CPoint
para este parámetro.
Valor devuelto
Valor RGB del color que se pinta el punto. Este valor puede ser diferente del especificado por crColor
si se usa una aproximación de ese color. Si se produce un error en la función (si el punto está fuera de la zona de recorte), el valor devuelto es -1.
Comentarios
El punto debe estar en la zona de recorte. Si el punto no está en la región de recorte, la función no hace nada.
No todos los dispositivos admiten la función SetPixel
. Para determinar si un dispositivo admite SetPixel
, llame a la función miembro GetDeviceCaps
con el índice RASTERCAPS
y compruebe el valor devuelto para la marca RC_BITBLT
.
CDC::SetPixelV
Establece el píxel de las coordenadas especificadas en la aproximación más cercana al color especificado.
BOOL SetPixelV(
int x,
int y,
COLORREF crColor);
BOOL SetPixelV(
POINT point,
COLORREF crColor);
Parámetros
x
Especifica la coordenada x, en unidades lógicas, del punto que se va a establecer.
y
Especifica la coordenada y, en unidades lógicas, del punto que se va a establecer.
crColor
Especifica el color que se va a usar para pintar el punto.
point
Especifica las coordenadas x e y lógicas del punto que se va a establecer. Puede pasar una estructura de datos POINT
o un objeto CPoint
para este parámetro.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
El punto debe estar tanto en la zona de recorte como en la parte visible de la superficie del dispositivo. No todos los dispositivos admiten la función miembro. Para obtener más información, consulte la funcionalidad RC_BITBLT
en la función miembro CDC::GetDeviceCaps
. SetPixelV
es más rápido que SetPixel
porque no es necesario devolver el valor de color del punto pintado.
CDC::SetPolyFillMode
Establece el modo de relleno de polígono.
int SetPolyFillMode(int nPolyFillMode);
Parámetros
nPolyFillMode
Especifica el nuevo modo de relleno. Este valor puede ser ALTERNATE
o WINDING
. El modo predeterminado establecido en Windows es ALTERNATE
.
Valor devuelto
El modo de relleno anterior, si la operación se realiza correctamente; de lo contrario, 0.
Comentarios
Cuando el modo de relleno de polígono es ALTERNATE
, el sistema rellena el área entre los lados del polígono impares y pares en cada línea de barrido. Es decir, el sistema rellena el área entre el primer y el segundo lado, entre el tercer y el cuarto lado, y así sucesivamente. Este modo es la predeterminada.
Cuando el modo de relleno de polígono es WINDING
, el sistema usa la dirección en la que se dibuja una figura para determinar si se va a rellenar un área. Cada segmento de línea de un polígono se dibuja en el sentido de las agujas del reloj o en sentido contrario a las agujas del reloj. Cada vez que una línea imaginaria dibujada desde un área cerrada hacia el exterior de una figura pasa por un segmento de línea en el sentido de las agujas del reloj, el recuento aumenta. Cuando la línea pasa por un segmento de línea en sentido contrario a las agujas del reloj, el recuento disminuye. El área se rellena si el recuento es distinto de cero cuando la línea alcanza el exterior de la figura.
CDC::SetROP2
Establece el modo de dibujo actual.
int SetROP2(int nDrawMode);
Parámetros
nDrawMode
Especifica el nuevo modo de dibujo. Puede ser cualquiera de los siguientes valores:
R2_BLACK
: el píxel siempre es negro.R2_WHITE
: el píxel siempre es blanco.R2_NOP
: el píxel permanece sin cambiar.R2_NOT
: el píxel es el inverso del color de la pantalla.R2_COPYPEN
: el píxel es del color del lápiz.R2_NOTCOPYPEN
: el píxel es el inverso del color del lápiz.R2_MERGEPENNOT
: el píxel es una combinación del color del lápiz y el inverso del color de la pantalla. Píxel final = (~
píxel de pantalla)|
lápiz.R2_MASKPENNOT
: el píxel es una combinación de los colores comunes del lápiz y del inverso de la pantalla. Píxel final = (~
píxel de pantalla)&
lápiz.R2_MERGENOTPEN
: el píxel es una combinación del color de la pantalla y el inverso del color del lápiz. Píxel final = (~
lápiz)|
píxel de pantalla.R2_MASKNOTPEN
: el píxel es una combinación de los colores comunes de la pantalla y del inverso del lápiz. Píxel final = (~
lápiz)&
píxel de pantalla.R2_MERGEPEN
: el píxel es una combinación del color del lápiz y el color de la pantalla. Píxel final = lápiz|
píxel de pantalla.R2_NOTMERGEPEN
: el píxel es el inverso del colorR2_MERGEPEN
. Píxel final =~
(lápiz|
píxel de pantalla).R2_MASKPEN
: el píxel es una combinación de los colores comunes del lápiz y la pantalla. Píxel final = lápiz&
píxel de pantalla.R2_NOTMASKPEN
: el píxel es el inverso del colorR2_MASKPEN
. Píxel final =~
(lápiz&
píxel de pantalla).R2_XORPEN
: el píxel es una combinación de los colores que están en el lápiz o en la pantalla, pero no en ambos. Píxel final = lápiz^
píxel de pantalla.R2_NOTXORPEN
: el píxel es el inverso del colorR2_XORPEN
. Píxel final =~
(lápiz^
píxel de pantalla).
Valor devuelto
El modo de dibujo anterior.
Puede ser cualquiera de los valores que se proporcionan en Windows SDK.
Comentarios
El modo de dibujo especifica la forma en que los colores del lápiz y el interior de los objetos rellenados se combinan con el color que ya está en la superficie de visualización.
El modo de dibujo es solo para dispositivos ráster; no se aplica a los dispositivos vectoriales. Los modos de dibujo son códigos binarios de operación de trama que representan todas las combinaciones booleanas posibles de dos variables, mediante los operadores binarios &
, |
y ^
(sin incluir |
) y la operación unaria ~
.
CDC::SetStretchBltMode
Establece el modo de extensión de mapa de bits para la función miembro StretchBlt
.
int SetStretchBltMode(int nStretchMode);
Parámetros
nStretchMode
Especifica el modo de extensión. Puede ser cualquiera de los siguientes valores:
Valor | Descripción |
---|---|
BLACKONWHITE |
Realiza una operación & booleana con los valores de color de los píxeles eliminados y existentes. Si el mapa de bits es un mapa de bits monocromático, este modo conserva los píxeles negros a costa de los píxeles blancos. |
COLORONCOLOR |
Elimina los píxeles. Este modo elimina todas las líneas eliminadas de píxeles sin intentar conservar su información. |
HALFTONE |
Asigna píxeles del rectángulo de origen a bloques de píxeles del rectángulo de destino. El color promedio del bloque de destino de píxeles se aproxima al color de los píxeles de origen. |
Después de establecer el modo de extensión HALFTONE , una aplicación debe llamar a la función SetBrushOrgEx de Win32 para establecer el origen del pincel. Si no lo hace, se produce una desalineación del pincel. |
|
STRETCH_ANDSCANS |
Windows 95/98: igual que BLACKONWHITE . |
STRETCH_DELETESCANS |
Windows 95/98: igual que COLORONCOLOR . |
STRETCH_HALFTONE |
Windows 95/98: igual que HALFTONE . |
STRETCH_ORSCANS |
Windows 95/98: igual que WHITEONBLACK . |
WHITEONBLACK |
Realiza una operación | booleana con los valores de color de los píxeles eliminados y existentes. Si el mapa de bits es un mapa de bits monocromático, este modo conserva los píxeles blancos a costa de los píxeles negros. |
Valor devuelto
El modo de extensión anterior. Puede ser STRETCH_ANDSCANS
, STRETCH_DELETESCANS
o STRETCH_ORSCANS
.
Comentarios
El modo de extensión de mapa de bits define la manera en que la información se quita de los mapas de bits que se comprimen con la función.
Los modos BLACKONWHITE
(STRETCH_ANDSCANS
) y WHITEONBLACK
(STRETCH_ORSCANS
) se usan normalmente para conservar píxeles de primer plano en mapas de bits monocromáticos. El modo COLORONCOLOR
(STRETCH_DELETESCANS
) se usa normalmente para conservar el color en los mapas de bits de color.
El HALFTONE
modo requiere más procesamiento de la imagen de origen que los otros tres modos; es más lento que los demás, pero genera imágenes de mayor calidad. Además, SetBrushOrgEx
se debe llamar a después de establecer el HALFTONE
modo para evitar la desalineación de pincel.
Es posible que también haya más modos de extensión disponibles en función de las funcionalidades del controlador del dispositivo.
CDC::SetTextAlign
Establece las marcas de alineación de texto.
UINT SetTextAlign(UINT nFlags);
Parámetros
nFlags
Especifica marcas de alineación de texto. Las marcas especifican la relación entre un punto y un rectángulo que rodea el texto. El punto puede ser la posición o coordenadas actuales especificadas por una función de salida de texto. El rectángulo que rodea el texto se define mediante las celdas de caracteres adyacentes de la cadena de texto. El parámetro nFlags
puede ser una o varias marcas de las tres categorías siguientes. Elija solo una marca de cada categoría. La primera categoría afecta a la alineación del texto en la dirección x:
TA_CENTER
: alinea el punto con el centro horizontal del rectángulo delimitador.TA_LEFT
: alinea el punto con el lado izquierdo del rectángulo delimitador. Esta es la configuración predeterminada.TA_RIGHT
: alinea el punto con el lado derecho del rectángulo delimitador.
La segunda categoría afecta a la alineación del texto en la dirección y:
TA_BASELINE
: alinea el punto con la línea base de la fuente elegida.TA_BOTTOM
: alinea el punto con el lado inferior del rectángulo delimitador.TA_TOP
: alinea el punto con el lado superior del rectángulo delimitador. Esta es la configuración predeterminada.
La tercera categoría determina si la posición actual se actualiza cuando se escribe texto:
TA_NOUPDATECP
No actualiza la posición actual después de cada llamada a una función de salida de texto. Esta es la configuración predeterminada.TA_UPDATECP
: actualiza la posición x actual después de cada llamada a una función de salida de texto. La nueva posición está en el lado derecho del rectángulo delimitador del texto. Cuando se establece esta marca, se omiten las coordenadas especificadas en las llamadas a la función miembroTextOut
.
Valor devuelto
La configuración anterior de alineación de texto, si se ejecuta correctamente. El byte de orden inferior contiene la configuración horizontal y el byte de orden superior contiene la configuración vertical; de lo contrario, 0.
Comentarios
Las funciones miembro TextOut
y ExtTextOut
usan estas marcas al colocar una cadena de texto en una pantalla o dispositivo. Las marcas especifican la relación entre un punto específico y un rectángulo que rodea el texto. Las coordenadas de este punto se pasan como parámetros a la función miembro TextOut
. El rectángulo que rodea el texto se forma con las celdas de caracteres adyacentes de la cadena de texto.
CDC::SetTextCharacterExtra
Establece la cantidad de espaciado entre caracteres.
int SetTextCharacterExtra(int nCharExtra);
Parámetros
nCharExtra
Especifica la cantidad de espacio adicional (en unidades lógicas) que se va a agregar a cada carácter. Si el modo de asignación actual no MM_TEXT
es , nCharExtra
se transforma y se redondea al píxel más cercano.
Valor devuelto
La cantidad anterior de espaciado entre caracteres.
Comentarios
GDI agrega este espaciado a cada carácter, incluidos los caracteres de salto, cuando escribe una línea de texto en el contexto de dispositivo. El valor predeterminado de la cantidad de espaciado entre caracteres es 0.
CDC::SetTextColor
Establece el color del texto en el color especificado.
virtual COLORREF SetTextColor(COLORREF crColor);
Parámetros
crColor
Especifica el color del texto como un valor de color RGB.
Valor devuelto
Un valor RGB para el color de texto anterior.
Comentarios
El sistema usa este color de texto al escribir texto en este contexto del dispositivo y también al convertir mapas de bits entre contextos de dispositivo monocromáticos y de color.
Si el dispositivo no puede representar el color especificado, el sistema establece el color del texto en el color físico más cercano. Las funciones miembro SetBkColor
y SetBkMode
especifican el color de fondo de un carácter.
Ejemplo
Vea el ejemplo de CWnd::OnCtlColor
.
CDC::SetTextJustification
Agrega espacio a los caracteres de salto de una cadena.
int SetTextJustification(
int nBreakExtra,
int nBreakCount);
Parámetros
nBreakExtra
Especifica el espacio adicional total que se va a agregar a la línea de texto (en unidades lógicas). Si el modo de asignación actual no MM_TEXT
es , el valor proporcionado por este parámetro se convierte en el modo de asignación actual y se redondea a la unidad de dispositivo más cercana.
nBreakCount
Especifica el número de caracteres de salto de la línea.
Valor devuelto
1 si la función se realiza correctamente; de lo contrario, 0.
Comentarios
Una aplicación puede usar las funciones miembro GetTextMetrics
para recuperar el carácter de salto de una fuente.
Después de llamar a la función miembro SetTextJustification
, una llamada a una función de salida de texto (como TextOut
) distribuye el espacio adicional especificado de manera uniforme entre el número especificado de caracteres de salto. El carácter de salto suele ser el carácter de espacio (ASCII 32), pero una fuente podría definirlo como otro carácter.
Normalmente, la función miembro GetTextExtent
se usa con SetTextJustification
. GetTextExtent
calcula el ancho de una línea determinada antes de la alineación. Una aplicación puede determinar cuánto espacio se especificará en el parámetro nBreakExtra
. Para ello, resta el valor devuelto por GetTextExtent
al ancho de la cadena después de la alineación.
La función SetTextJustification
se puede usar para alinear una línea que contiene varias ejecuciones en fuentes diferentes. En este caso, la línea debe crearse por etapas, para lo que cada ejecución se alinea y escribe por separado.
Dado que pueden producirse errores de redondeo durante la alineación, el sistema mantiene un término de error en ejecución que define el error actual. Al alinear una línea que contiene varias ejecuciones, GetTextExtent
usa automáticamente este término de error al calcular la extensión de la ejecución siguiente. Esto permite que la función de salida de texto combine el error en la nueva ejecución.
Después de alinear cada línea, este término de error debe borrarse para impedir que se incorpore a la línea siguiente. El término se puede borrar mediante una llamada a SetTextJustification
con nBreakExtra
establecido en 0.
CDC::SetViewportExt
Establece las extensiones x e y del área de visualización del contexto de dispositivo.
virtual CSize SetViewportExt(
int cx,
int cy);
CSize SetViewportExt(SIZE size);
Parámetros
cx
Especifica la extensión x del área de visualización (en unidades de dispositivo).
cy
Especifica la extensión y del área de visualización (en unidades de dispositivo).
size
Especifica las extensiones x e y del área de visualización (en unidades de dispositivo).
Valor devuelto
Las extensiones anteriores del área de visualización como un objeto CSize
. Cuando se produce un error, las coordenadas x e y del objeto CSize
devuelto se establecen en 0.
Comentarios
El área de visualización, junto con la ventana del contexto de dispositivo, define la forma en que GDI asigna puntos del sistema de coordenadas lógicas a puntos del sistema de coordenadas del dispositivo real. En otras palabras, definen la forma en que GDI convierte las coordenadas lógicas en coordenadas del dispositivo.
Cuando se establecen los siguientes modos de asignación, se omiten las llamadas a SetWindowExt
y SetViewportExt
:
MM_HIENGLISH |
MM_LOMETRIC |
---|---|
MM_HIMETRIC |
MM_TEXT |
MM_LOENGLISH |
MM_TWIPS |
Cuando se establece el modo MM_ISOTROPIC
, una aplicación debe llamar a la función miembro SetWindowExt
antes de llamar a SetViewportExt
.
Ejemplo
Vea el ejemplo de CView::OnPrepareDC
.
CDC::SetViewportOrg
Establece el origen del área de visualización del contexto de dispositivo.
virtual CPoint SetViewportOrg(
int x,
int y);
CPoint SetViewportOrg(POINT point);
Parámetros
x
Especifica la coordenada x (en unidades de dispositivo) del origen del área de visualización. El valor debe estar dentro del intervalo del sistema de coordenadas del dispositivo.
y
Especifica la coordenada y (en unidades de dispositivo) del origen del área de visualización. El valor debe estar dentro del intervalo del sistema de coordenadas del dispositivo.
point
Especifica el origen del área de visualización. Los valores deben estar dentro del intervalo del sistema de coordenadas del dispositivo. Puede pasar una estructura POINT
o un objeto CPoint
para este parámetro.
Valor devuelto
El origen anterior del área de visualización (en coordenadas del dispositivo) como un objeto CPoint
.
Comentarios
El área de visualización, junto con la ventana del contexto de dispositivo, define la forma en que GDI asigna puntos del sistema de coordenadas lógicas a puntos del sistema de coordenadas del dispositivo real. En otras palabras, definen la forma en que GDI convierte las coordenadas lógicas en coordenadas del dispositivo.
El origen del área de visualización marca el punto del sistema de coordenadas del dispositivo al que GDI asigna el origen de la ventana, un punto del sistema de coordenadas lógicas especificado por la función miembro SetWindowOrg
. GDI asigna todos los demás puntos siguiendo el mismo proceso requerido para asignar el origen de la ventana al origen del área de visualización. Por ejemplo, todos los puntos de un círculo alrededor del punto del origen de la ventana se dispondrán en un círculo alrededor del punto del origen del área de visualización. Del mismo modo, todos los puntos de una línea que pasa por el origen de la ventana se dispondrán en una línea que pasa por el origen del área de visualización.
Ejemplo
Vea el ejemplo de CView::OnPrepareDC
.
CDC::SetWindowExt
Establece las extensiones x e y de la ventana asociada al contexto de dispositivo.
virtual CSize SetWindowExt(
int cx,
int cy);
CSize SetWindowExt(SIZE size);
Parámetros
cx
Especifica la extensión x (en unidades lógicas) de la ventana.
cy
Especifica la extensión y (en unidades lógicas) de la ventana.
size
Especifica las extensiones x e y (en unidades lógicas) de la ventana.
Valor devuelto
Las extensiones anteriores de la ventana (en unidades lógicas) como un objeto CSize
. Si se produce un error, las coordenadas x e y del objeto CSize
devuelto se establecen en 0.
Comentarios
La ventana, junto con el área de visualización del contexto de dispositivo, define la forma en que GDI asigna puntos del sistema de coordenadas lógicas a puntos del sistema de coordenadas del dispositivo.
Cuando se establecen los siguientes modos de asignación, se omiten las llamadas a las funciones SetWindowExt
y SetViewportExt
:
MM_HIENGLISH
MM_HIMETRIC
MM_LOENGLISH
MM_LOMETRIC
MM_TEXT
MM_TWIPS
Cuando se establece el modo MM_ISOTROPIC
, una aplicación debe llamar a la función miembro SetWindowExt
antes de llamar a SetViewportExt
.
Ejemplo
Vea el ejemplo de CView::OnPrepareDC
.
CDC::SetWindowOrg
Establece el origen de la ventana del contexto de dispositivo.
CPoint SetWindowOrg(
int x,
int y);
CPoint SetWindowOrg(POINT point);
Parámetros
x
Especifica la coordenada x lógica del nuevo origen de la ventana.
y
Especifica la coordenada y lógica del nuevo origen de la ventana.
point
Especifica las coordenadas lógicas del nuevo origen de la ventana. Puede pasar una estructura POINT
o un objeto CPoint
para este parámetro.
Valor devuelto
El origen anterior de la ventana como un objeto CPoint
.
Comentarios
La ventana, junto con el área de visualización del contexto de dispositivo, define la forma en que GDI asigna puntos del sistema de coordenadas lógicas a puntos del sistema de coordenadas del dispositivo.
El origen de la ventana marca el punto del sistema de coordenadas lógicas desde el que GDI asigna el origen del área de visualización, un punto del sistema de coordenadas del dispositivo especificado por la función SetWindowOrg
. GDI asigna todos los demás puntos siguiendo el mismo proceso requerido para asignar el origen de la ventana al origen del área de visualización. Por ejemplo, todos los puntos de un círculo alrededor del punto del origen de la ventana se dispondrán en un círculo alrededor del punto del origen del área de visualización. Del mismo modo, todos los puntos de una línea que pasa por el origen de la ventana se dispondrán en una línea que pasa por el origen del área de visualización.
CDC::SetWorldTransform
Establece una transformación lineal bidimensional entre el espacio global y el espacio de página para el contexto de dispositivo especificado. Esta transformación se puede usar para escalar, rotar, distorsionar o traducir la salida de gráficos.
BOOL SetWorldTransform(const XFORM& rXform);
Parámetros
rXform
Referencia a una estructura XFORM
que contiene los datos de transformación.
Valor devuelto
Devuelve un valor distinto de cero si se ejecuta correctamente.
Devuelve 0 en caso de error.
Para obtener información de errores extendida, realice una llamada a GetLastError
.
Comentarios
Este método encapsula la función GDI de Windows SetWorldTransform
.
CDC::StartDoc
Indica al controlador del dispositivo que se está iniciando un nuevo trabajo de impresión y que todas las llamadas posteriores a StartPage
y EndPage
se deben poner en cola en el mismo trabajo hasta que se produzca una llamada a EndDoc
.
int StartDoc(LPDOCINFO lpDocInfo);
int StartDoc(LPCTSTR lpszDocName);
Parámetros
lpDocInfo
Apunta a una estructura DOCINFO
que contiene el nombre del archivo de documento y el nombre del archivo de salida.
lpszDocName
Puntero a una cadena que contiene el nombre del archivo de documento.
Valor devuelto
Si la función se realiza correctamente, el valor devuelto es mayor que cero. Este valor es el identificador del trabajo de impresión del documento.
Si se produce un error en la función, el valor devuelto es menor o igual que cero.
Comentarios
Esto garantiza que los documentos de más de una página no se intercalan con otros trabajos.
Para Windows 3.1 y versiones posteriores, esta función reemplaza el escape de impresora STARTDOC
. El uso de esta función garantiza que los documentos que contienen más de una página no se intercalan con otros trabajos de impresión.
StartDoc
no debe usarse dentro de los metarchivos.
Ejemplo
Este fragmento de código obtiene la impresora predeterminada, abre un trabajo de impresión y pone en cola una página que contiene "Hello, World!". Dado que el texto que imprime este código no se escala a las unidades lógicas de la impresora, el texto de salida podría mostrarse en letras tan pequeñas que el resultado es ilegible. Las funciones de escalado de CDC, como SetMapMode
, SetViewportOrg
y SetWindowExt
, se pueden usar para corregir el escalado.
void CDCView::DoStartDoc()
{
// get the default printer
CPrintDialog dlg(FALSE);
dlg.GetDefaults();
// is a default printer set up?
HDC hdcPrinter = dlg.GetPrinterDC();
if (hdcPrinter == NULL)
{
MessageBox(_T("Buy a printer!"));
}
else
{
// create a CDC and attach it to the default printer
CDC dcPrinter;
dcPrinter.Attach(hdcPrinter);
// call StartDoc() to begin printing
DOCINFO docinfo;
memset(&docinfo, 0, sizeof(docinfo));
docinfo.cbSize = sizeof(docinfo);
docinfo.lpszDocName = _T("CDC::StartDoc() Code Fragment");
// if it fails, complain and exit gracefully
if (dcPrinter.StartDoc(&docinfo) < 0)
{
MessageBox(_T("Printer wouldn't initialize"));
}
else
{
// start a page
if (dcPrinter.StartPage() < 0)
{
MessageBox(_T("Could not start page"));
dcPrinter.AbortDoc();
}
else
{
// actually do some printing
CGdiObject *pOldFont = dcPrinter.SelectStockObject(SYSTEM_FONT);
dcPrinter.TextOut(50, 50, _T("Hello World!"), 12);
dcPrinter.EndPage();
dcPrinter.EndDoc();
dcPrinter.SelectObject(pOldFont);
}
}
}
}
CDC::StartPage
Llame a esta función miembro para preparar el controlador de impresora para recibir datos.
int StartPage();
Valor devuelto
Mayor o igual que 0 si la función se realiza correctamente, o un valor negativo si se ha producido un error.
Comentarios
StartPage
reemplaza los escapes NEWFRAME
y BANDINFO
.
Para obtener información general sobre la secuencia de llamadas de impresión, consulte la función miembro StartDoc
.
El sistema deshabilita la función miembro ResetDC
entre las llamadas a StartPage
y EndPage
.
Ejemplo
Vea el ejemplo de CDC::StartDoc
.
CDC::StretchBlt
Copia un mapa de bits de un rectángulo de origen en un rectángulo de destino, estirando o comprimiendo el mapa de bits si es necesario para ajustarse a las dimensiones del rectángulo de destino.
BOOL StretchBlt(
int x,
int y,
int nWidth,
int nHeight,
CDC* pSrcDC,
int xSrc,
int ySrc,
int nSrcWidth,
int nSrcHeight,
DWORD dwRop);
Parámetros
x
Especifica la coordenada X (en unidades lógicas) de la esquina superior izquierda del rectángulo de destino.
y
Especifica la coordenada Y (en unidades lógicas) de la esquina superior izquierda del rectángulo de destino.
nWidth
Especifica el ancho (en unidades lógicas) del rectángulo de destino.
nHeight
Especifica el alto (en unidades lógicas) del rectángulo de destino.
pSrcDC
Especifica el contexto de dispositivo de origen.
xSrc
Especifica la coordenada X (en unidades lógicas) de la esquina superior izquierda del rectángulo de origen.
ySrc
Especifica la coordenada Y (en unidades lógicas) de la esquina superior izquierda del rectángulo de origen.
nSrcWidth
Especifica el ancho (en unidades lógicas) del rectángulo de origen.
nSrcHeight
Especifica el alto (en unidades lógicas) del rectángulo de origen.
dwRop
Especifica la operación de trama que se va a realizar. Los códigos de operación de trama definen cómo combina GDI los colores en las operaciones de salida que implican un pincel actual, un posible mapa de bits de origen y un mapa de bits de destino. Este parámetro puede tener uno de los valores siguientes:
BLACKNESS
: pone en negro toda la salida.DSTINVERT
: invierte el mapa de bits de destino.MERGECOPY
: combina el patrón y el mapa de bits de origen mediante el operador AND booleano.MERGEPAINT
: combina el mapa de bits de origen invertido con el mapa de bits de destino mediante el operador OR booleano.NOTSRCCOPY
: copia el mapa de bits de origen invertido en el destino.NOTSRCERASE
: invierte el resultado de combinar los mapas de bits de origen y de destino mediante el operador OR booleano.PATCOPY
: copia el patrón en el mapa de bits de destino.PATINVERT
: combina el mapa de bits de destino con el patrón mediante el operador XOR booleano.PATPAINT
: combina el mapa de bits de origen invertido con el patrón mediante el operador OR booleano. Combina el resultado de esta operación con el mapa de bits de destino mediante el operador OR booleano.SRCAND
: combina píxeles de los mapas de bits de destino y de origen mediante el operador AND booleano.SRCCOPY
: copia el mapa de bits de origen en el mapa de bits de destino.SRCERASE
: invierte el mapa de bits de destino y combina el resultado con el mapa de bits de origen mediante el operador AND booleano.SRCINVERT
: combina píxeles de los mapas de bits de destino y de origen mediante el operador XOR booleano.SRCPAINT
: combina píxeles de los mapas de bits de destino y de origen mediante el operador OR booleano.WHITENESS
: pone en blanco toda la salida.
Valor devuelto
Es distinto de cero si se dibuja el mapa de bits; de lo contrario, es 0.
Comentarios
La función emplea el modo de ajuste del contexto de dispositivo de destino (establecido por SetStretchBltMode
) para determinar cómo estirar o comprimir el mapa de bits.
La función StretchBlt
mueve el mapa de bits del dispositivo de origen especificado por pSrcDC
al dispositivo de destino representado por el objeto de contexto de dispositivo a cuya función miembro se llama. Los parámetros xSrc
, ySrc
, nSrcWidth
y nSrcHeight
definen la esquina superior izquierda y las dimensiones del rectángulo de origen. Los parámetros x
, y
, nWidth
y nHeight
proporcionan la esquina superior izquierda y las dimensiones del rectángulo de destino. La operación de trama especificada por dwRop
define cómo se combinan el mapa de bits de origen y los bits que ya están presentes en el dispositivo de destino.
La función StretchBlt
crea una imagen reflejada de un mapa de bits si los signos de los parámetros nSrcWidth
y nWidth
o nSrcHeight
y nHeight
son distintos. Si nSrcWidth
y nWidth
tienen signos diferentes, la función crea una imagen reflejada del mapa de bits a lo largo del eje x. Si nSrcHeight
y nHeight
tienen signos diferentes, la función crea una imagen reflejada del mapa de bits a lo largo del eje y.
La función StretchBlt
estira o comprime el mapa de bits de origen en memoria y después copia el resultado al destino. Si se va a combinar un patrón con el resultado, no se combina hasta que el mapa de bits de origen extendido se copia en el destino. Si se usa un pincel, es el pincel seleccionado en el contexto del dispositivo de destino. Las coordenadas de destino se transforman según el contexto de dispositivo de destino; las coordenadas de origen se transforman según el contexto de dispositivo de origen.
Si los mapas de bits de destino, origen y patrón no tienen el mismo formato de color, StretchBlt
convierte los mapas de bits de origen y patrón para que coincidan con los mapas de bits de destino. En la conversión se usan los colores de primer plano y de fondo del contexto de dispositivo de destino.
Si StretchBlt
debe convertir un mapa de bits monocromo a color, establece los bits blancos (1) al color de fondo y los bits negros (0) al color de primer plano. Para convertir de color a monocromo, establece en blanco (1) los píxeles que coinciden con el color de fondo y establece en negro (0) todos los demás píxeles. Se usan los colores de primer plano y de fondo del contexto de dispositivo con color.
No todos los dispositivos admiten la función StretchBlt
. Para determinar si un dispositivo admite StretchBlt
, llame a la función miembro GetDeviceCaps
con el índice RASTERCAPS
y compruebe el valor devuelto para la marca RC_STRETCHBLT
.
CDC::StrokeAndFillPath
Cierra cualquier figura abierta de un trazado, traza el contorno del trazado con el lápiz actual y rellena su interior con el pincel actual.
BOOL StrokeAndFillPath();
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
El contexto de dispositivo debe contener un trazado cerrado. La StrokeAndFillPath
función miembro tiene el mismo efecto que cerrar todas las figuras abiertas en la ruta de acceso, y estromar y rellenar la ruta de acceso por separado, excepto que la región rellenada no se superponerá a la región trazos incluso si el lápiz es ancho.
CDC::StrokePath
Representa el trazado especificado con el lápiz actual.
BOOL StrokePath();
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
El contexto de dispositivo debe contener un trazado cerrado.
CDC::TabbedTextOut
Llame a esta función miembro para escribir una cadena de caracteres en la ubicación especificada y expandir las tabulaciones hasta los valores especificados en la matriz de posiciones de tabulación.
virtual CSize TabbedTextOut(
int x,
int y,
LPCTSTR lpszString,
int nCount,
int nTabPositions,
LPINT lpnTabStopPositions,
int nTabOrigin);
CSize TabbedTextOut(
int x,
int y,
const CString& str,
int nTabPositions,
LPINT lpnTabStopPositions,
int nTabOrigin);
Parámetros
x
Especifica la coordenada x lógica del punto inicial de la cadena.
y
Especifica la coordenada y lógica del punto inicial de la cadena.
lpszString
Apunta a la cadena de caracteres que se va a dibujar. Puede pasar un puntero a una matriz de caracteres o a un objeto CString
para este parámetro.
nCount
Especifica la longitud de la cadena a la que apunta lpszString
.
nTabPositions
Especifica el número de valores de la matriz de posiciones de tabulación.
lpnTabStopPositions
Apunta a una matriz que contienen las posiciones de tabulación (en unidades lógicas). Las tabulaciones deben ordenarse en orden creciente; el valor x más pequeño debe ser el primer elemento de la matriz.
nTabOrigin
Especifica la coordenada x de la posición inicial desde la que se expanden las tabulaciones (en unidades lógicas).
str
Objeto CString
que contiene los caracteres especificados.
Valor devuelto
Las dimensiones de la cadena (en unidades lógicas) como un objeto CSize
.
Comentarios
El texto se escribe en la fuente seleccionada actualmente. Si nTabPositions
es 0 y lpnTabStopPositions
es NULL
, las tabulaciones se expanden ocho veces el ancho de carácter medio.
Si nTabPositions
es 1, las tabulaciones se separan con la distancia especificada por el primer valor de la matriz lpnTabStopPositions
. Si la matriz lpnTabStopPositions
contiene más de un valor, se establece una tabulación para cada valor de la matriz, hasta el número especificado por nTabPositions
. El parámetro nTabOrigin
permite que una aplicación llame a la función TabbedTextOut
varias veces para una sola línea. Si la aplicación llama a la función más de una vez con el parámetro nTabOrigin
establecido en el mismo valor de cada vez, la función expande todas las tabulaciones relativas a la posición especificada por nTabOrigin
.
De forma predeterminada, la función no usa ni actualiza la posición actual. Si una aplicación necesita actualizar la posición actual cuando llama a la función, la aplicación puede llamar a la función miembro SetTextAlign
con nFlags
establecido en TA_UPDATECP
. Cuando se establece esta marca, Windows omite los parámetros x
e y
en las llamadas posteriores a TabbedTextOut
, y usa la posición actual en su lugar.
CDC::TextOut
Escribe una cadena de caracteres en la ubicación especificada usando la fuente seleccionada actualmente.
virtual BOOL TextOut(
int x,
int y,
LPCTSTR lpszString,
int nCount);
BOOL TextOut(
int x,
int y,
const CString& str);
Parámetros
x
Especifica la coordenada X lógica del punto inicial del texto.
y
Especifica la coordenada Y lógica del punto inicial del texto.
lpszString
Apunta a la cadena de caracteres que se va a dibujar.
nCount
Especifica el número de caracteres de la cadena.
str
Objeto CString
que contiene los caracteres que se van a dibujar.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
Los orígenes de los caracteres están en la esquina superior izquierda de la celda de caracteres. De forma predeterminada, la función no usa ni actualiza la posición actual.
Si una aplicación necesita actualizar la posición actual cuando llama a TextOut
, la aplicación puede llamar a la función miembro SetTextAlign
con nFlags
establecido en TA_UPDATECP
. Cuando se establece esta marca, Windows omite los parámetros x
e y
en las llamadas posteriores a TextOut
, y usa la posición actual en su lugar.
Ejemplo
Vea el ejemplo de CDC::BeginPath
.
CDC::TransparentBlt
Llame a esta función miembro para transferir un bloque de bits de los datos de color, que se corresponde con un rectángulo de píxeles desde el contexto de dispositivo de origen especificado hasta un contexto de dispositivo de destino.
BOOL TransparentBlt(
int xDest,
int yDest,
int nDestWidth,
int nDestHeight,
CDC* pSrcDC,
int xSrc,
int ySrc,
int nSrcWidth,
int nSrcHeight,
UINT clrTransparent);
Parámetros
xDest
Especifica la coordenada x, en unidades lógicas, de la esquina superior izquierda del rectángulo de destino.
yDest
Especifica la coordenada y, en unidades lógicas, de la esquina superior izquierda del rectángulo de destino.
nDestWidth
Especifica el ancho, en unidades lógicas, del rectángulo de destino.
nDestHeight
Especifica el alto, en unidades lógicas, del rectángulo de destino.
pSrcDC
Puntero al contexto de dispositivo de origen.
xSrc
Especifica la coordenada x en unidades lógicas del rectángulo de origen.
ySrc
Especifica la coordenada y en unidades lógicas del rectángulo de origen.
nSrcWidth
Especifica el ancho, en unidades lógicas, del rectángulo de origen.
nSrcHeight
Especifica el alto, en unidades lógicas, del rectángulo de origen.
clrTransparent
Color RGB del mapa de bits de origen que se va a tratar como transparente.
Valor devuelto
TRUE
si es correcto; de lo contrario, FALSE
.
Comentarios
TransparentBlt
permite la transparencia; es decir, el color RGB indicado por clrTransparent
se representa como transparente para la transferencia.
Para más información, consulte TransparentBlt
en Windows SDK.
CDC::UpdateColors
Actualiza el área cliente del contexto de dispositivo, para lo que hace coincidir los colores actuales del área cliente con la paleta del sistema píxel a píxel.
void UpdateColors();
Comentarios
Una ventana inactiva con una paleta lógica implementada puede llamar a UpdateColors
como alternativa para volver a dibujar su área cliente cuando cambia la paleta del sistema.
Para obtener más información sobre el uso de paletas de colores, consulte UpdateColors
en Windows SDK.
La función miembro UpdateColors
normalmente actualiza un área cliente más rápido que si se vuelve a dibujar el área. Aun así, dado que la función realiza la traducción de colores en función del color de cada píxel antes de cambiar la paleta del sistema, cada llamada a esta función produce la pérdida de cierta precisión del color.
CDC::WidenPath
Redefine el trazado actual como el área que se pintaría si dicho trazado se trazase con el lápiz seleccionado actualmente en el contexto de dispositivo.
BOOL WidenPath();
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
Esta función solo se realiza correctamente si el lápiz actual es un lápiz geométrico creado por la segunda versión de la función miembro CreatePen
, o si el lápiz se crea con la primera versión de CreatePen
y tiene un ancho (en unidades de dispositivo) de más de 1. El contexto de dispositivo debe contener un trazado cerrado. Las curvas Bézier del trazado se convierten en secuencias de líneas rectas que se aproximan a las curvas ampliadas. Por lo tanto, no quedan curvas Bézier en el trazado después de llamar a WidenPath
.
Consulte también
CObject
(clase)
Gráfico de jerarquías
CPaintDC
(clase)
CWindowDC
(clase)
CClientDC
(clase)
CMetaFileDC
(clase)