⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imageprocess.cpp

📁 使用大恒采集卡的图像显示
💻 CPP
字号:
// ImageProcess.cpp: implementation of the CImageProcess class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "ImageProcess.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
IMPLEMENT_DYNAMIC(CImageProcess,CObject)
CImageProcess::CImageProcess()
{
	m_dwOperation=0L;
	m_dwColorModel=IMAGE_COLOR_RGBA;
}

CImageProcess::~CImageProcess()
{

}
#ifdef _DEBUG
void CImageProcess::Dump(CDumpContext& dc)const
{
	CObject::Dump(dc);
}
void CImageProcess::AssertValid()const
{
	CObject::AssertValid();
}
#endif

void CImageProcess::SetOperation(DWORD dwOperation)
{
	m_dwOperation=dwOperation;
}

void CImageProcess::SetColorModel(DWORD dwColorModel)
{
	m_dwColorModel=dwColorModel;
}

DWORD CImageProcess::GetColorModel() const
{
	return m_dwColorModel;
}

DWORD CImageProcess::GetOperation() const
{
	return m_dwOperation;
}

BYTE CImageProcess::GetAlpha(DWORD dwRGBA)
{
	return (BYTE)((dwRGBA & 0xFF000000)>>24);
}

BYTE CImageProcess::GetBlue(DWORD dwRGBA)
{
	return (BYTE)((dwRGBA & 0x000000FF)>>16);	
}

BYTE CImageProcess::GetGreen(DWORD dwRGBA)
{
	return (BYTE)((dwRGBA & 0x0000FF00)>>8);
}

BYTE CImageProcess::GetRed(DWORD dwRGBA)
{
	return (BYTE)(dwRGBA & 0x00FF0000);
}

DWORD CImageProcess::PutRGB(BYTE byRed, BYTE byGreen, BYTE byBlue, BYTE byAlpha)
{
	return ((((DWORD)byAlpha)<<24) | (((DWORD)byRed)<<16) | (((DWORD)byGreen)<<8) |
				((DWORD)byBlue));
}

DWORD CImageProcess::PutRGB(BYTE byRed, BYTE byGreen, BYTE byBlue)
{
	return (0xFF000000 | (((DWORD)byRed)<<16) | (((DWORD)byGreen<<8)) |
				((DWORD)byBlue));
}

HBITMAP CImageProcess::CreateDdb(HDC hDC, int nWidth, int nHeight, 
								 const LPBYTE lpbyBits32)
{
	BYTE* pbyBits=new BYTE[sizeof(BITMAPV4HEADER)];
	if(pbyBits==NULL) return NULL;
	BITMAPV4HEADER* pbmih=(BITMAPV4HEADER*)pbyBits;
	pbmih->bV4Size=sizeof(BITMAPV4HEADER);
	pbmih->bV4Width=(LONG)nWidth;
	pbmih->bV4Height=(LONG)(-nHeight);
	pbmih->bV4Planes=1;
	pbmih->bV4BitCount=24;
	pbmih->bV4V4Compression=BI_RGB;
	pbmih->bV4SizeImage=0;
	pbmih->bV4XPelsPerMeter=0;
	pbmih->bV4YPelsPerMeter=0;
	pbmih->bV4ClrUsed=0;
	pbmih->bV4ClrImportant=0;
	HBITMAP hBitmap=::CreateDIBitmap(hDC,(BITMAPINFOHEADER*)pbmih,CBM_INIT,lpbyBits32,
									(BITMAPINFO*)pbmih,DIB_RGB_COLORS);
	delete[] pbyBits;
	return hBitmap;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -