Classe CFont
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 um CFont com as características especificadas. |
CFont::CreateFontIndirect |
Inicializa um objeto CFont com as características fornecidas em uma estrutura LOGFONT . |
CFont::CreatePointFont |
Inicializa um CFont com a altura especificada, medido em décimos de ponto e typeface. |
CFont::CreatePointFontIndirect |
O mesmo que CreateFontIndirect , exceto que a altura da fonte é medida em décimos de um ponto em vez de unidades lógicas. |
CFont::FromHandle |
Quando um HFONT do Windows é fornecido, retorna um ponteiro para um objeto CFont . |
CFont::GetLogFont |
Preenche um LOGFONT com informações sobre a fonte lógica anexada ao objeto CFont . |
Operadores públicos
Nome | Descrição |
---|---|
CFont::operator HFONT |
Retorna o identificador de fonte do Windows GDI anexado ao objeto CFont . |
Comentários
Para usar um objeto CFont
, construa um objeto CFont
e anexe uma fonte do Windows a ele com CreateFont
, CreateFontIndirect
, CreatePointFont
ou CreatePointFontIndirect
e, em seguida, use as funções membro do objeto para manipular a fonte.
Geralmente, as funções CreatePointFont
e CreatePointFontIndirect
são mais fáceis de usar do que CreateFont
ou CreateFontIndirect
porque fazem automaticamente a conversão para a altura da fonte de um tamanho de ponto para unidades lógicas.
Para obter mais informações sobre CFont
, confira Objetos Gráficos.
Hierarquia de herança
CFont
Requisitos
Cabeçalho: afxwin.h
CFont::CFont
Constrói um objeto CFont
.
CFont();
Comentários
O objeto resultante precisa ser inicializado com CreateFont
, CreateFontIndirect
, CreatePointFont
ou CreatePointFontIndirect
antes de poder ser usado.
Exemplo
CFont font;
CFont::CreateFont
Inicializa um objeto CFont
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. Confira o membro lfHeight
da estrutura LOGFONT
no SDK do Windows para obter uma descrição. O valor absoluto de nHeight
não pode exceder 16.384 unidades de dispositivo depois de convertido. Para todas as comparações de altura, o mapeador de fonte procura a maior fonte 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) dos caracteres na fonte. Se nWidth
for 0, a proporção do dispositivo será correspondida com a taxa de 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 por meio das origens dos primeiros e últimos caracteres em uma linha. O ângulo é medido no sentido anti-horário, partindo do eixo X. Para mais informações, confira o membro lfEscapement
na estrutura LOGFONT
no SDK do Windows.
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 partindo do eixo x para sistemas de coordenadas nos quais a direção y está para baixo e no sentido horário partindo do eixo x para sistemas de coordenadas nos quais a direção y está para cima.
nWeight
Especifica o peso da fonte (em pixels pintados a cada 1.000). Para mais informações, confira o membro lfWeight
na estrutura LOGFONT
no SDK do Windows. Os valores descritos são aproximados; a aparência real depende da face de tipo. Algumas fontes têm apenas os pesos FW_NORMAL
, FW_REGULAR
e FW_BOLD
. Se FW_DONTCARE
for especificado, um peso padrão será usado.
bItalic
Especifica se a fonte é em itálico.
bUnderline
Especifica se a fonte está sublinhada.
cStrikeOut
Especifica se os caracteres na fonte são tachados. Especifica uma fonte tachada se definida como um valor diferente de zero.
nCharSet
Especifica o conjunto de caracteres da fonte. Confira o membro lfCharSet
na estrutura LOGFONT
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 pode 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 do dispositivo de saída.
O mapeador de fontes não usa o valor DEFAULT_CHARSET
. Um aplicativo pode usar esse valor para permitir que o nome e o tamanho de uma fonte descrevam totalmente a fonte lógica. Se uma fonte com o nome especificado não existir, uma fonte de qualquer conjunto de caracteres poderá ser substituída pela fonte especificada. Para evitar resultados inesperados, os aplicativos devem usar o valor DEFAULT_CHARSET
com moderação.
nOutPrecision
Especifica a precisão de saída desejada. A precisão de saída define o quão próxima a saída precisa corresponder à altura, largura, orientação, escape e espaçamento entre caracteres da fonte solicitada. Confira o membro lfOutPrecision
na estrutura LOGFONT
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 área de recorte. Confira o membro lfClipPrecision
na estrutura LOGFONT
no SDK do Windows para obter uma lista de valores.
Para usar uma fonte somente leitura inserida, um aplicativo precisa especificar CLIP_ENCAPSULATE
.
Para obter uma rotação consistente de fontes de dispositivo, TrueType e vetoriais, um aplicativo pode usar o operador OR bit a bit (|
) para combinar o valor CLIP_LH_ANGLES
com qualquer um dos outros valores nClipPrecision
. Se o bit de CLIP_LH_ANGLES
estiver definido, a rotação para todas as fontes dependerá se a orientação do sistema de coordenadas é para a direita ou esquerda. (Para obter mais informações sobre a orientação dos sistemas de coordenadas, consulte a descrição do parâmetro nOrientation
.) Se CLIP_LH_ANGLES
não estiver definido, as fontes do dispositivo sempre girarão no sentido anti-horário, mas a rotação de outras fontes dependerá da orientação do sistema de coordenadas.
nQuality
Especifica a qualidade de saída da fonte, que define o nível de precisão com que o GDI deve tentar corresponder os atributos de fonte lógica aos de uma fonte física real. Confira o membro lfQuality
na estrutura LOGFONT
no SDK do Windows para obter uma lista de valores.
nPitchAndFamily
Especifica o espaçamento entre caracteres e a família da fonte. Confira o membro lfPitchAndFamily
na estrutura LOGFONT
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 da face de tipo da fonte. O comprimento dessa cadeia de caracteres não pode exceder 30 caracteres. A função EnumFontFamilies
do Windows pode ser usada para enumerar todas as fontes disponíveis no momento. Se lpszFacename
é NULL
, o GDI usa uma face de tipo independente do dispositivo.
Valor de retorno
Diferente de zero se tiver êxito; caso contrário, 0.
Comentários
Posteriormente, a fonte pode ser selecionada como a fonte para qualquer contexto de dispositivo.
A função CreateFont
não cria uma fonte de GDI do Windows. Ele simplesmente seleciona a correspondência mais próxima das 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 que devem sempre receber valores específicos são nHeight
e lpszFacename
. Se nHeight
e lpszFacename
não forem definidos pelo aplicativo, a fonte lógica criada dependerá do dispositivo.
Quando você terminar a criação do objeto CFont
por meio da função CreateFont
, use CDC::SelectObject
para selecionar uma fonte diferente no contexto do dispositivo e exclua o objeto CFont
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 objeto CFont
com as características fornecidas em uma estrutura LOGFONT
.
BOOL CreateFontIndirect(const LOGFONT* lpLogFont);
Parâmetros
lpLogFont
Aponta para uma estrutura LOGFONT
que define as características da fonte lógica.
Valor de retorno
Diferente de zero se tiver êxito; caso contrário, 0.
Comentários
Posteriormente, a fonte pode ser selecionada como a fonte atual para qualquer dispositivo.
Essa fonte tem as características especificadas na estrutura LOGFONT
. Quando a fonte é selecionada usando a função membro CDC::SelectObject
, o mapeador de fonte GDI tenta corresponder a fonte lógica com uma fonte física existente. Se o mapeador de fontes não encontrar uma correspondência exata para a fonte lógica, ele fornecerá uma fonte alternativa cujas características correspondem ao maior número possível de características solicitadas.
Quando você não precisar mais criar o objeto CFont
por meio da função CreateFontIndirect
, use CDC::SelectObject
para selecionar uma fonte diferente no contexto do dispositivo e exclua o objeto CFont
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
Essa função fornece uma maneira simples de criar uma fonte de um tipo de face e tamanho de ponto especificados.
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 da face de tipo da fonte. O comprimento dessa cadeia de caracteres não pode exceder 30 caracteres. A função EnumFontFamilies
do Windows pode ser usada para enumerar todas as fontes disponíveis no momento. Se lpszFaceName
é NULL
, o GDI usa uma face de tipo independente do dispositivo.
pDC
Ponteiro para o objeto CDC
a ser usado para converter a altura em nPointSize
em unidades lógicas. Se NULL
, um contexto de dispositivo de tela é usado para a conversão.
Valor de retorno
Diferente de zero em caso de êxito; caso contrário, 0.
Comentários
Converte automaticamente a altura em nPointSize
unidades lógicas usando o objeto CDC apontado por pDC
.
Quando terminar com o objeto CFont
criado pela função CreatePointFont
, primeiro selecione a fonte fora do contexto do dispositivo e exclua o objeto CFont
.
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
Essa função é a mesma CreateFontIndirect
que, exceto que o membro lfHeight
do LOGFONT
é interpretado em décimos de um ponto em vez de unidades de dispositivo.
BOOL CreatePointFontIndirect(
const LOGFONT* lpLogFont,
CDC* pDC = NULL);
Parâmetros
lpLogFont
Aponta para uma estrutura LOGFONT
que define as características da fonte lógica. O membro lfHeight
da estrutura LOGFONT
é medido em décimos de um ponto em vez de unidades lógicas. (Por exemplo, defina lfHeight
para 120 para solicitar uma fonte de 12 pontos.)
pDC
Ponteiro para o objeto CDC
a ser usado para converter a altura em lfHeight
em unidades lógicas. Se NULL
, um contexto de dispositivo de tela é usado para a conversão.
Valor de retorno
Diferente de zero em caso de êxito; caso contrário, 0.
Comentários
Essa função converte automaticamente a altura em lfHeight
em unidades lógicas usando o objeto CDC
apontado por pDC
antes de passar a estrutura LOGFONT
para o Windows.
Quando terminar com o objeto CFont
criado pela função CreatePointFontIndirect
, primeiro selecione a fonte fora do contexto do dispositivo e exclua o objeto CFont
.
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 objeto CFont
quando dado um identificador HFONT
para um objeto de fonte do GDI do Windows.
static CFont* PASCAL FromHandle(HFONT hFont);
Parâmetros
hFont
Um identificador HFONT
para uma fonte do Windows.
Valor de retorno
Um ponteiro para um objeto CFont
se tiver êxito; caso contrário, NULL
.
Comentários
Se um objeto CFont
não estiver anexado ao identificador, 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 são excluídos. Outra maneira de dizer isso é que o objeto temporário é válido somente 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 estrutura LOGFONT
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 esse operador para obter o identificador do GDI do Windows da fonte anexada ao objeto CFont
.
operator HFONT() const;
Valor de retorno
O identificador do objeto de fonte GDI do Windows anexado se CFont
tiver êxito; caso contrário, NULL
.
Comentários
Como esse operador é usado automaticamente para conversões de CFont
em fontes e texto, você pode passar objetos CFont
para funções que esperam HFONT
s.
Para obter mais informações sobre como usar objetos gráficos, confira 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();
Confira também
Exemplo de MFC HIERSVR
Classe CGdiObject
Gráfico da hierarquia