Classe CImage
CImage Fornece suporte a bitmap avançado, incluindo a capacidade de carregar e salvar imagens nos formatos JPEG, GIF, BMP e formato PNG (formato formato PNG).
class CImage
Comentários
CImage seções leva bitmaps que são qualquer bitmap independente de dispositivo (DIB) ou não; Entretanto, você pode usar Criar or CImage::Load com apenas as seções DIB.Você pode anexar um bitmap da seção DIB não a um CImage uso de objeto Anexar, mas, em seguida, você não pode usar o seguinte CImage métodos que oferecem suporte a bitmaps de seção DIB somente:
Para determinar se um bitmap anexado é uma seção DIB, telefonar IsDibSection.
Observação: |
---|
Observação: No Visual Studio .NET 2003, essa classe mantém uma contagem do número de CImage objetos criados. Sempre que a contagem chega a 0, a função GdiplusShutdown é chamado automaticamente para versão recursos utilizados pelo GDI +.Isso garante que qualquer CImage objetos criados direta ou indiretamente por DLLs sempre são destruídos corretamente e que GdiplusShutdown não é chamado de DllMain. |
Observação: |
---|
Usando global CImage objetos em uma DLL não é recomendado. Se você precisar usar um global CImage objeto em uma DLL, telefonar CImage::ReleaseGDIPlus explicitamente liberar recursos utilizados pelo GDI +. |
CImage não pode ser selecionado em um novo CDC.CImage cria seu próprio HDC da imagem.Porque um HBITMAP só pode ser selecionado em uma HDC ao mesmo time, a HBITMAP associado com o CImage não pode ser selecionado em outro HDC.Se você precisar de um CDC, recuperar o HDC from the CImage e atribua a ele para CDC::FromHandle.
Exemplo
// Get a CDC for the image
CDC* pDC = CDC::FromHandle(m_myImage.GetDC());
// Use pDC here
pDC->Rectangle(0, 40, 100, 50);
m_myImage.ReleaseDC();
Quando você usa CImage em um projeto MFC, observe que funções de membro em seu projeto esperam um ponteiro para um CBitmap objeto.If you want to use CImage with such a function, like CMenu::AppendMenu, use CBitmap::FromHandle, pass it your CImage HBITMAP, and use the returned CBitmap*.
void CMyDlg::OnRButtonDown(UINT nFlags, CPoint point)
{
UNREFERENCED_PARAMETER(nFlags);
CBitmap* pBitmap = CBitmap::FromHandle(m_myImage);
m_pmenuPop->AppendMenu(0, ID_BMPCOMMAND, pBitmap);
ClientToScreen(&point);
m_pmenuPop->TrackPopupMenu(TPM_RIGHTBUTTON | TPM_LEFTALIGN, point.x,
point.y, this);
}
Por meio de CImage, você tem acesso para os bits real de uma seção DIB. Você pode usar um CImage objeto em qualquer lugar que você usava anteriormente uma seção HBITMAP Win32 ou DIB.
Observação: |
---|
O seguinte CImage métodos têm limitações no uso: |
Método |
Limitação |
---|---|
Funciona com apenas o Windows NT 4.0 ou posterior.Não funcionará em aplicativos em execução no Windows 95/98 ou posterior. |
|
Funciona com apenas o Windows NT 4.0 ou posterior.Não funcionará em aplicativos em execução no Windows 95/98 ou posterior. |
|
Funciona com apenas o Windows 2000, Windows 98 e sistemas posteriores. |
|
Funciona com apenas o Windows 2000, Windows 98 e sistemas posteriores. |
|
Oferece suporte a transparência com apenas o Windows 2000, Windows 98 e sistemas posteriores. |
See Limitações de CImage com sistemas operacionais anteriores para obter informações mais detalhadas sobre as limitações sobre esses métodos.
Você pode usar CImage do MFC ou ATL.
Observação: |
---|
Quando você cria um projeto usando CImage, você deve definir CString antes de você incluir atlimage.h. Se o seu projeto usa ATL sem MFC, incluem atlstr.h antes de você incluir atlimage.h. Se seu projeto usa MFC (ou se é um projeto ATL com o suporte a MFC), inclua afxstr.h antes de você incluir atlimage.h. Da mesma forma, você deve incluir atlimage.h antes de você incluir atlimpl.cpp .Para fazer isso com com facilidade, incluem: atlimage.h no seu stdafx.h . |
Requisitos
Cabeçalho: atlimage.h
Consulte também
Tarefas
Exemplo de MMXSwarm: Demonstra CImage e Visual C++ MMX suporte
Exemplo de SimpleImage: Cargas, redimensiona, converte e imagens de gravação