#include #include"Image.h" int Image::loadBitmap(TCHAR name[100]) { int i; for(i = 0;i < 100;i++) { filename[i] = name[i]; } return loadBitmap(); } int Image::loadBitmap() { fp = CreateFile(filename,GENERIC_READ,0,NULL,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,NULL); if (fp == INVALID_HANDLE_VALUE) { return -1; } temp = (LPBYTE)GlobalAlloc(GPTR,GetFileSize(fp,NULL)); ReadFile(fp,temp,GetFileSize(fp,NULL),&dummy,NULL); CloseHandle(fp); bitmap_head=(LPBITMAPFILEHEADER)temp; bitmap_info=(LPBITMAPINFO)(temp+sizeof(BITMAPFILEHEADER)); bitmap_map = temp+bitmap_head->bfOffBits; this->setWidth( bitmap_info->bmiHeader.biWidth ); this->setHeight(bitmap_info->bmiHeader.biHeight ); return 0; } BITMAPINFO Image::getBitmapInfo() { return *bitmap_info; } unsigned char* Image::getBitmapMap() { return (unsigned char*)bitmap_map; } Image::Image() { wsprintf(filename ,"test.bmp"); this->setWidth(0); this->setHeight(0); this->setX(0); this->setY(0); } Image::~Image() { ; } void Image::Plus(lpImage main,lpImage pl) { LPBYTE main_map; LPBYTE pl_map; main_map = main->getBitmapMap(); pl_map = pl->getBitmapMap(); int i,j; for(i = 0;i< 640*480*3;i+=3) { if(pl_map[i] <= 250 && pl_map[i+1] <= 250 && pl_map[i+2] <=250) { main_map[i] = pl_map[i]; main_map[i+1] = pl_map[i+1]; main_map[i+2] = pl_map[i+2]; } } }