Uma imagem digital é a representação de uma imagem bidimensional usando números binários codificados de modo a permitir seu armazenamento, transferência, impressão ou reprodução, e seu processamento por meios eletrônicos. Há dois tipos fundamentais de imagem digital. Uma é do tipo rastreio (raster) e outra do tipo vetorial. Uma imagem digital do tipo raster, ou bitmap, ou ainda matricial, é aquela que em algum momento apresenta uma correspondência bit-a-bit entre os pontos da imagem raster e os pontos da imagem reproduzida na tela de um monitor.
A imagem vetorial não é reproduzida necessariamente por aproximação de pontos, antes era destinada a ser reproduzida por plotters de traços que reproduziam a imagem por deslocamento de canetas-tinteiro.
Tipicamente, as imagens raster são imagens fotográficas, e as imagens vetoriais são desenhos técnicos de engenharia. Os quadrinhos ilustrados se assemelham em qualidade a imagens raster, mas são impressos em plotters que passaram a imprimir à maneira das impressoras comuns por jato de tinta.
CStatic
Fornece a funcionalidade de um controle estático do Windows.
HBITMAP
Um identificador para um bitmap. Para exibir imagens do tipo GIF e JPG use a classe CImage.
Visual Studio
Para usar o Picture Control siga os seguintes passos:
- Crie uma novo projeto MFC – Dialog Based.
- Arraste para o dialogo um componente Static Text e um Picture Control.
- Mude o ID do componente Picture Control para IDC_IMAGEM.
- Mude a propriedade Type do componente Picture Control para Bitmap.
- Use a figura abaixo para montar seu design:
- Efetue o download da imagem em: dowload da imagem.
- Abra a imagem no Paint Brush do Windows e a salve como tipo BMP em um diretório da sua escolha.
- Preencha seu código gerado automaticamente com os trechos do código abaixo.
- Lembre-se de trocar o diretório da imagem no código pelo seu diretório escolhido, em C++ as barras de diretório precisam ser invertidas.
Exemplo:
Neste exemplo usamos a mensagem de inicialização do Windows e um componente Picture Control para exibir uma imagem de Bitmap.
C++
// Código gerado autimaticamente // ImagemcppDlg.cpp : implementation file // #include "stdafx.h" #include "Imagemcpp.h" #include "ImagemcppDlg.h" #include "afxdialogex.h" #ifdef _DEBUG #define new DEBUG_NEW #endif CImagemcppDlg::CImagemcppDlg(CWnd* pParent /*=NULL*/) : CDialogEx(CImagemcppDlg::IDD, pParent) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CImagemcppDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CImagemcppDlg, CDialogEx) ON_WM_PAINT() ON_WM_QUERYDRAGICON() END_MESSAGE_MAP() BOOL CImagemcppDlg::OnInitDialog() { CDialogEx::OnInitDialog(); SetIcon(m_hIcon, TRUE); SetIcon(m_hIcon, FALSE); // Desenvolvimento Aberto // Este bloco exibe uma imagem no formato BMP CStatic * foto; CString imagem; foto = (CStatic *) GetDlgItem(IDC_IMAGEM); imagem = L"C:/Desenvolvimento Aberto/images.bmp"; HBITMAP pic = (HBITMAP)LoadImage(NULL, imagem, IMAGE_BITMAP, 275, 183, LR_LOADFROMFILE); foto->SetBitmap(pic); return TRUE; } void CImagemcppDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; dc.DrawIcon(x, y, m_hIcon); } else { CDialogEx::OnPaint(); } } HCURSOR CImagemcppDlg::OnQueryDragIcon() { return static_cast<HCURSOR>(m_hIcon); }