Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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
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