Visual – MFC – Picture Control – CStatic – HBITMAP – C++

Publicado: 11 de abril de 2014 em C/C++

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.

picturecontrol-programa

CPicture Control – BMP – programa

 

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:

  1. Crie uma novo projeto MFC – Dialog Based.
  2. Arraste para o dialogo um componente Static Text e um Picture Control.
  3. Mude o ID do componente Picture Control para IDC_IMAGEM.
  4. Mude a propriedade Type do componente Picture Control para Bitmap.
  5. Use a figura abaixo para montar seu design:

    picturecontrol-design

    Picture Control – Design

  6. Efetue o download da imagem em: dowload da imagem.
  7. Abra a imagem no Paint Brush do Windows e a salve como tipo BMP em um diretório da sua escolha.
  8. Preencha seu código gerado automaticamente com os trechos do código abaixo.
  9. 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);
}
Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s