Partilhar via


CFont Classe

Encapsula uma fonte GDI (graphics device interface) do Windows e fornece funções de membro para manipular a fonte.

Sintaxe

class CFont : public CGdiObject

Membros

Construtores Públicos

Nome Descrição
CFont::CFont Constrói um objeto CFont.

Métodos Públicos

Nome Descrição
CFont::CreateFont Inicializa a CFont com as características especificadas.
CFont::CreateFontIndirect Inicializa um CFont objeto com as características dadas em uma LOGFONT estrutura.
CFont::CreatePointFont Inicializa a CFont com a altura especificada, medida em décimos de um ponto, e tipo de letra.
CFont::CreatePointFontIndirect O mesmo CreateFontIndirect que exceto que a altura da fonte é medida em décimos de um ponto em vez de unidades lógicas.
CFont::FromHandle Retorna um ponteiro para um CFont objeto quando recebe um Windows HFONT.
CFont::GetLogFont Preenche um LOGFONT com informações sobre a fonte lógica anexada CFont ao objeto.

Operadores Públicos

Nome Descrição
CFont::operator HFONT Retorna o identificador de fonte GDI do Windows anexado CFont ao objeto.

Observações

Para usar um CFont objeto, construa um CFont objeto e anexe uma fonte do Windows a ele com CreateFont, CreateFontIndirect, CreatePointFont, ou CreatePointFontIndirecte, em seguida, use as funções de membro do objeto para manipular a fonte.

As CreatePointFont funções e CreatePointFontIndirect são muitas vezes mais fáceis de usar do que CreateFont ou CreateFontIndirect desde que eles fazem a conversão para a altura da fonte de um tamanho de ponto para unidades lógicas automaticamente.

Para obter mais informações sobre CFonto , consulte Objetos gráficos.

Hierarquia de herança

CObject

CGdiObject

CFont

Requerimentos

Cabeçalho:afxwin.h

CFont::CFont

Constrói um objeto CFont.

CFont();

Observações

O objeto resultante deve ser inicializado com CreateFont, CreateFontIndirect, CreatePointFontou CreatePointFontIndirect antes de poder ser usado.

Exemplo

CFont font;

CFont::CreateFont

Inicializa um CFont objeto com as características especificadas.

BOOL CreateFont(
    int nHeight,
    int nWidth,
    int nEscapement,
    int nOrientation,
    int nWeight,
    BYTE bItalic,
    BYTE bUnderline,
    BYTE cStrikeOut,
    BYTE nCharSet,
    BYTE nOutPrecision,
    BYTE nClipPrecision,
    BYTE nQuality,
    BYTE nPitchAndFamily,
    LPCTSTR lpszFacename);

Parâmetros

nHeight
Especifica a altura desejada (em unidades lógicas) da fonte. Consulte o lfHeightLOGFONT membro da estrutura no SDK do Windows para obter uma descrição. O valor absoluto de não deve exceder 16.384 unidades de nHeight dispositivo após a conversão. Para todas as comparações de altura, o mapeador de fontes procura a fonte maior que não excede o tamanho solicitado ou a menor fonte se todas as fontes excederem o tamanho solicitado.

nWidth
Especifica a largura média (em unidades lógicas) de caracteres na fonte. Se nWidth for 0, a proporção do dispositivo será comparada com a proporção de digitalização das fontes disponíveis para encontrar a correspondência mais próxima, que é determinada pelo valor absoluto da diferença.

nEscapement
Especifica o ângulo (em unidades de 0,1 grau) entre o vetor de escape e o eixo x da superfície de exibição. O vetor de escape é a linha através das origens do primeiro e último caracteres em uma linha. O ângulo é medido no sentido anti-horário a partir do eixo x. Consulte o lfEscapement membro na LOGFONT estrutura no SDK do Windows para obter mais informações.

nOrientation
Especifica o ângulo (em unidades de 0,1 grau) entre a linha de base de um caractere e o eixo x. O ângulo é medido no sentido anti-horário a partir do eixo x para sistemas de coordenadas em que a direção y está para baixo e no sentido horário a partir do eixo x para sistemas de coordenadas em que a direção y está para cima.

nWeight
Especifica a espessura da fonte (em pixels tintados por 1000). Consulte o lfWeight membro na LOGFONT estrutura no SDK do Windows para obter mais informações. Os valores descritos são aproximados; A aparência real depende do tipo de letra. Algumas fontes têm apenas FW_NORMAL, FW_REGULARe FW_BOLD pesos. Se FW_DONTCARE for especificado, um peso padrão será usado.

bItalic
Especifica se a fonte está em itálico.

bUnderline
Especifica se a fonte está sublinhada.

cStrikeOut
Especifica se os caracteres na fonte são removidos. Especifica uma fonte riscada se definida como um valor diferente de zero.

nCharSet
Especifica o conjunto de caracteres da fonteConsulte o lfCharSetLOGFONT membro na estrutura no SDK do Windows para obter uma lista de valores.

O conjunto de caracteres OEM depende do sistema.

Fontes com outros conjuntos de caracteres podem existir no sistema. Um aplicativo que usa uma fonte com um conjunto de caracteres desconhecido não deve tentar traduzir ou interpretar cadeias de caracteres que devem ser renderizadas com essa fonte. Em vez disso, as cadeias de caracteres devem ser passadas diretamente para o driver de dispositivo de saída.

O mapeador de fontes não usa o DEFAULT_CHARSET valor. Um aplicativo pode usar esse valor para permitir que o nome e o tamanho de uma fonte descrevam completamente a fonte lógica. Se uma fonte com o nome especificado não existir, uma fonte de qualquer conjunto de caracteres pode ser substituída pela fonte especificada. Para evitar resultados inesperados, os aplicativos devem usar o DEFAULT_CHARSET valor com moderação.

nOutPrecision
Especifica a precisão de saída desejada. A precisão da saída define o quão perto a saída deve corresponder à altura, largura, orientação de caracteres, escape e passo da fonte solicitada. Consulte o lfOutPrecisionLOGFONT membro na estrutura no SDK do Windows para obter uma lista de valores e mais informações.

nClipPrecision
Especifica a precisão de recorte desejada. A precisão de recorte define como cortar caracteres que estão parcialmente fora da região de recorte. Consulte o lfClipPrecision membro na LOGFONT estrutura no SDK do Windows para obter uma lista de valores.

Para usar uma fonte somente leitura incorporada, um aplicativo deve especificar CLIP_ENCAPSULATE.

Para obter uma rotação consistente de fontes de dispositivo, TrueType e vetor, um aplicativo pode usar o operador OR bit a bit (|) para combinar o CLIP_LH_ANGLES valor com qualquer um dos outros nClipPrecision valores. Se o CLIP_LH_ANGLES bit estiver definido, a rotação de todas as fontes depende se a orientação do sistema de coordenadas é canhota ou destra. Para obter mais informações sobre a orientação de sistemas de coordenadas, consulte a descrição do nOrientation parâmetro. Se CLIP_LH_ANGLES não estiver definida, as fontes do dispositivo sempre giram no sentido anti-horário, mas a rotação de outras fontes depende da orientação do sistema de coordenadas.

nQuality
Especifica a qualidade de saída da fonte, que define o quão cuidadosamente o GDI deve tentar corresponder os atributos de fonte lógica aos de uma fonte física real. Consulte o lfQuality membro na LOGFONT estrutura no SDK do Windows para obter uma lista de valores.

nPitchAndFamily
Especifica o tom e a família da fonte. Consulte o lfPitchAndFamilyLOGFONT membro na estrutura no SDK do Windows para obter uma lista de valores e mais informações.

lpszFacename
Um CString ou ponteiro para uma cadeia de caracteres terminada em nulo que especifica o nome do tipo de letra da fonte. O comprimento desta cadeia de caracteres não deve exceder 30 caracteres. A função Windows EnumFontFamilies pode ser usada para enumerar todas as fontes atualmente disponíveis. Se lpszFacename for NULL, o GDI usa um tipo de letra independente do dispositivo.

Valor de retorno

Diferente de zero se for bem-sucedido; caso contrário, 0.

Observações

A fonte pode ser posteriormente selecionada como a fonte para qualquer contexto de dispositivo.

A CreateFont função não cria uma nova fonte GDI do Windows. Ele apenas seleciona a correspondência mais próxima entre as fontes físicas disponíveis para o GDI.

Os aplicativos podem usar as configurações padrão para a maioria dos parâmetros ao criar uma fonte lógica. Os parâmetros aos quais devem ser sempre dados valores específicos são nHeight e lpszFacename. Se nHeight e lpszFacename não forem definidos pelo aplicativo, a fonte lógica que é criada é dependente do dispositivo.

Quando terminar com o CFont objeto criado pela CreateFont função, use CDC::SelectObject para selecionar uma fonte diferente no contexto do dispositivo e, em seguida, exclua o CFont objeto que não é mais necessário.

Exemplo

// The code fragment shows how to create a font object,
// select the font object into a DC (device context) for text
// drawing, and finally delete the font object.

// Initializes a CFont object with the specified characteristics.
CFont font;
VERIFY(font.CreateFont(
    12,                       // nHeight
    0,                        // nWidth
    0,                        // nEscapement
    0,                        // nOrientation
    FW_NORMAL,                // nWeight
    FALSE,                    // bItalic
    FALSE,                    // bUnderline
    0,                        // cStrikeOut
    ANSI_CHARSET,             // nCharSet
    OUT_DEFAULT_PRECIS,       // nOutPrecision
    CLIP_DEFAULT_PRECIS,      // nClipPrecision
    DEFAULT_QUALITY,          // nQuality
    DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily
    _T("Arial")));            // lpszFacename

// Do something with the font just created...
CClientDC dc(this);
CFont *def_font = dc.SelectObject(&font);
dc.TextOut(5, 5, _T("Hello"), 5);
dc.SelectObject(def_font);

// Done with the font.  Delete the font object.
font.DeleteObject();

CFont::CreateFontIndirect

Inicializa um CFont objeto com as características dadas em uma LOGFONT estrutura.

BOOL CreateFontIndirect(const LOGFONT* lpLogFont);

Parâmetros

lpLogFont
Aponta para uma LOGFONT estrutura que define as características da fonte lógica.

Valor de retorno

Diferente de zero se for bem-sucedido; caso contrário, 0.

Observações

A fonte pode ser posteriormente selecionada como a fonte atual para qualquer dispositivo.

Esta fonte tem as características especificadas na LOGFONT estrutura. Quando a fonte é selecionada usando a CDC::SelectObject função membro, o mapeador de fontes GDI tenta corresponder a fonte lógica com uma fonte física existente. Se o mapeador de fontes não conseguir encontrar uma correspondência exata para a fonte lógica, ele fornecerá uma fonte alternativa cujas características correspondam ao maior número possível de características solicitadas.

Quando você não precisar mais do CFont objeto criado pela CreateFontIndirect função, use CDC::SelectObject para selecionar uma fonte diferente no contexto do dispositivo e, em seguida, exclua o CFont objeto que não é mais necessário.

Exemplo

// The code fragment shows how to create a font object,
// select the font object into a DC (device context) for text
// drawing, and finally delete the font object.

// Initializes a CFont object with the characteristics given
// in a LOGFONT structure.
CFont font;
LOGFONT lf;
memset(&lf, 0, sizeof(LOGFONT)); // zero out structure
lf.lfHeight = 12;                // request a 12-pixel-height font
_tcsncpy_s(lf.lfFaceName, LF_FACESIZE,
           _T("Arial"), 7);           // request a face name "Arial"
VERIFY(font.CreateFontIndirect(&lf)); // create the font

// Do something with the font just created...
CClientDC dc(this);
CFont *def_font = dc.SelectObject(&font);
dc.TextOut(5, 5, _T("Hello"), 5);
dc.SelectObject(def_font);

// Done with the font. Delete the font object.
font.DeleteObject();

CFont::CreatePointFont

Esta função fornece uma maneira simples de criar uma fonte de um tipo de letra especificado e tamanho de ponto.

BOOL CreatePointFont(
    int nPointSize,
    LPCTSTR lpszFaceName,
    CDC* pDC = NULL);

Parâmetros

nPointSize
Altura da fonte solicitada em décimos de ponto. (Por exemplo, passe 120 para solicitar uma fonte de 12 pontos.)

lpszFaceName
Um CString ou ponteiro para uma cadeia de caracteres terminada em nulo que especifica o nome do tipo de letra da fonte. O comprimento desta cadeia de caracteres não deve exceder 30 caracteres. A função Windows EnumFontFamilies pode ser usada para enumerar todas as fontes atualmente disponíveis. Se lpszFaceName for NULL, o GDI usa um tipo de letra independente do dispositivo.

pDC
Ponteiro para o CDC objeto a ser usado para converter a altura em nPointSize unidades lógicas. Se NULL, um contexto de dispositivo de tela é usado para a conversão.

Valor de retorno

Diferente de zero se for bem-sucedido, caso contrário, 0.

Observações

Ele converte automaticamente a altura em nPointSize unidades lógicas usando o objeto CDC apontado por pDC.

Quando terminar com o CFontCreatePointFont objeto criado pela função, primeiro selecione a fonte fora do contexto do dispositivo e, em seguida, exclua o CFont objeto.

Exemplo

// The code fragment shows how to create a font object,
// select the font object into a DC (device context) for text
// drawing, and finally delete the font object.

CClientDC dc(this);

CFont font;
VERIFY(font.CreatePointFont(120, _T("Arial"), &dc));

// Do something with the font just created...
CFont *def_font = dc.SelectObject(&font);
dc.TextOut(5, 5, _T("Hello"), 5);
dc.SelectObject(def_font);

// Done with the font. Delete the font object.
font.DeleteObject();

CFont::CreatePointFontIndirect

Esta função é a mesma que CreateFontIndirect exceto que o lfHeight membro do é interpretado em décimos de um ponto em vez de unidades de LOGFONT dispositivo.

BOOL CreatePointFontIndirect(
    const LOGFONT* lpLogFont,
    CDC* pDC = NULL);

Parâmetros

lpLogFont
Aponta para uma LOGFONT estrutura que define as características da fonte lógica. O lfHeight membro da estrutura é medido LOGFONT em décimos de um ponto em vez de unidades lógicas. (Por exemplo, defina lfHeight como 120 para solicitar uma fonte de 12 pontos.)

pDC
Ponteiro para o CDC objeto a ser usado para converter a altura em lfHeight unidades lógicas. Se NULL, um contexto de dispositivo de tela é usado para a conversão.

Valor de retorno

Diferente de zero se for bem-sucedido, caso contrário, 0.

Observações

Esta função converte automaticamente a altura em lfHeight unidades lógicas usando o objeto apontado CDC por pDC antes de passar a estrutura para o LOGFONT Windows.

Quando terminar com o CFontCreatePointFontIndirect objeto criado pela função, primeiro selecione a fonte fora do contexto do dispositivo e, em seguida, exclua o CFont objeto.

Exemplo

// The code fragment shows how to create a font object,
// select the font object into a DC (device context) for text
// drawing, and finally delete the font object.
LOGFONT lf;

// clear out structure.
memset(&lf, 0, sizeof(LOGFONT));

// request a 12-pixel-height font
lf.lfHeight = 120;

// request a face name "Arial".
_tcsncpy_s(lf.lfFaceName, LF_FACESIZE, _T("Arial"), 7);

CClientDC dc(this);

CFont font;
VERIFY(font.CreatePointFontIndirect(&lf, &dc));

// Do something with the font just created...
CFont *def_font = dc.SelectObject(&font);
dc.TextOut(5, 5, _T("Hello"), 5);
dc.SelectObject(def_font);

// Done with the font. Delete the font object.
font.DeleteObject();

CFont::FromHandle

Retorna um ponteiro para um CFont objeto quando dado um HFONT identificador para um objeto de fonte GDI do Windows.

static CFont* PASCAL FromHandle(HFONT hFont);

Parâmetros

hFont
Um HFONT identificador para uma fonte do Windows.

Valor de retorno

Um ponteiro para um CFont objeto, se bem-sucedido, caso contrário NULL.

Observações

Se um CFont objeto ainda não estiver anexado à alça, um objeto temporário CFont será criado e anexado. Esse objeto temporário CFont é válido somente até a próxima vez que o aplicativo tiver tempo ocioso em seu loop de eventos, momento em que todos os objetos gráficos temporários serão excluídos. Outra maneira de dizer isso é que o objeto temporário é válido apenas durante o processamento de uma mensagem de janela.

Exemplo

// The code fragment shows how to create a font object using
// Windows API CreateFontIndirect(), convert the HFONT to a
// CFont* before selecting the font object into a DC (device
// context) for text drawing, and finally delete the font object.

// Initialize a CFont object with the characteristics given
// in a LOGFONT structure.
LOGFONT lf;

// clear out structure
memset(&lf, 0, sizeof(LOGFONT));
// request a 12-pixel-height font
lf.lfHeight = 12;
// request a face name "Arial"
_tcsncpy_s(lf.lfFaceName, LF_FACESIZE, _T("Arial"), 7);
// create the font
HFONT hfont = ::CreateFontIndirect(&lf);

// Convert the HFONT to CFont*.
CFont *pfont = CFont::FromHandle(hfont);

// Do something with the font just created...
CClientDC dc(this);
CFont *def_font = dc.SelectObject(pfont);
dc.TextOut(5, 5, _T("Hello"), 5);
dc.SelectObject(def_font);

// Done with the font. Delete the font object.
::DeleteObject(hfont);

CFont::GetLogFont

Chame essa função para recuperar uma cópia da LOGFONT estrutura para CFont.

int GetLogFont(LOGFONT* pLogFont);

Parâmetros

pLogFont
Ponteiro para a LOGFONT estrutura para receber as informações da fonte.

Valor de retorno

Diferente de zero se a função for bem-sucedida, caso contrário, 0.

Exemplo

// The code fragment shows how to retrieve a copy of the
// LOGFONT structure for a currently selected font of a window.

CFont *pFont = pWnd->GetFont();
if (NULL != pFont)
{
   LOGFONT lf;
   pFont->GetLogFont(&lf);
   TRACE(_T("Typeface name of font = %s\n"), lf.lfFaceName);
}

CFont::operator HFONT

Use este operador para obter o identificador GDI do Windows da fonte anexada CFont ao objeto.

operator HFONT() const;

Valor de retorno

O identificador do objeto de fonte GDI do Windows anexado a CFont se for bem-sucedido; caso contrário NULL.

Observações

Como esse operador é usado automaticamente para conversões de CFont para Fontes e Texto, você pode passar CFont objetos para funções que esperam HFONT.

Para obter mais informações sobre como usar objetos gráficos, consulte Objetos gráficos no SDK do Windows.

Exemplo

// The code fragment shows the usage of CFont::operator HFONT.

// Initialize a CFont object with the characteristics given
// in a LOGFONT structure.
LOGFONT lf;

// clear out structure
memset(&lf, 0, sizeof(LOGFONT));

// request a 12-pixel-height font
lf.lfHeight = 12;

// request a face name "Arial"
_tcsncpy_s(lf.lfFaceName, LF_FACESIZE, _T("Arial"), 7);

CFont font1;
font1.CreateFontIndirect(&lf); // create the font

// CFont::operator HFONT automatically converts font1 from
// CFont* to HFONT.
CFont *font2 = CFont::FromHandle(font1);

// Do something with the font just created...
CClientDC dc(this);
CFont *def_font = dc.SelectObject(font2);
dc.TextOut(5, 5, _T("Hello"), 5);
dc.SelectObject(def_font);

// Done with the font. Delete the font object.
font1.DeleteObject();

Ver também

Exemplo de MFC HIERSVR
CGdiObject Classe
Gráfico de Hierarquia