亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mbmpclass.cpp

?? 在充分研究了原有的二值圖像加密算法的基礎上
?? CPP
字號:
// MBmpClass.cpp: implementation of the MBmpClass class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "FPSystem.h"
#include "MBmpClass.h"

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

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

MBmpClass::MBmpClass()
{
	hImgData=NULL;
	hBitmap=NULL;
    hPalette=NULL;
}

MBmpClass::~MBmpClass()
{
	if(hBitmap)
		DeleteObject(hBitmap);
	if(hPalette)
		DeleteObject(hPalette);
	if(hImgData!=NULL)
	{
		GlobalUnlock(hImgData);
		GlobalFree(hImgData);  
		hImgData=NULL; 
	}
}

/****************************************************************
 *
 * 函數名稱:
 *  LoadBMPFile();
 *
 * 參數: 
 *  char *inFileName       加載圖像的文件名  
 *  CDC *pDC               設備上下文
 * 返回值:
 *   TRUE                  成功讀取;
 *   FALSE                 失敗;
 *
 * 說明:
 *    該函數讀入圖像文件文件數據到全局內存句柄hImgData中;
 *
 ****************************************************************/
BOOL MBmpClass::LoadBmpFile(CString &inFileName,CDC *pDC)   //070426加上了CDC *pDC
{
	if(hImgData!=NULL)
	{
		GlobalUnlock(hImgData);
		GlobalFree(hImgData);  
		hImgData=NULL;
	}

	CFile file;  //文件對象
	if(NULL==file.Open(inFileName,CFile::modeRead))
	{
		AfxMessageBox("文件打開有誤!",MB_OK|MB_ICONEXCLAMATION);
		return FALSE;
	}
    //讀入文件頭,并判斷是否為Bmp格式
    file.Read((LPSTR)&bf,sizeof(BITMAPFILEHEADER));
	if(bf.bfType!=0x4D42)
	{
		AfxMessageBox("File isn't a bmp file!");
		file.Close();
		return FALSE;
	}
	//讀入信息頭
	file.Read((LPSTR)&bi,sizeof(BITMAPINFOHEADER));
	//計算一行所需的字節數
	DWORD			   LineBytes;	//BMP圖像中一行所需的數據長度
	LineBytes=(DWORD)WIDTHBYTES(bi.biWidth*bi.biBitCount);
	//計算整幅圖像數據所需的內存空間
	DWORD 		       ImgSize;		//整幅圖像數據所需的內存空間
	ImgSize=(DWORD)LineBytes*bi.biHeight;
		
	//顏色數
	DWORD          NumColors;	//用到的顏色數,if=0 then True color 24 bits
    if(bi.biClrUsed!=0)//直接指定顏色數
	{
		NumColors=(DWORD)bi.biClrUsed;
	}
	else	//根據圖像深度計算顏色數
	{
        switch(bi.biBitCount)
		{
       	    case 1:
        	    NumColors=2;	//二值圖像
				bi.biClrUsed=2;
        	    break;
        	case 4:
        	    NumColors=16;	//16色圖像
				bi.biClrUsed=16;
        	    break;
        	case 8:
        	    NumColors=256;	//256色圖像
				bi.biClrUsed=256;
        	    break;
        	case 24:
        	    NumColors=0;  //無調色板
        	    break;
            default:
                AfxMessageBox("Invalid color numbers!",MB_OK|MB_ICONEXCLAMATION);
                file.Close();
                return FALSE; 
        }
	}

	//判斷圖像的偏移地址是否正確
	if(bf.bfOffBits!=(DWORD)(sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+NumColors*sizeof(RGBQUAD)))
	{
		AfxMessageBox("Invalid color numbers!",MB_OK|MB_ICONEXCLAMATION);
		file.Close();
		return FALSE; 
	}
	//計算整個文件的大小
	bf.bfSize=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+NumColors*sizeof(RGBQUAD)+ImgSize;

	//內存數據區hImgData=包括位圖信息頭+顏色表+圖象數據
	if(hImgData!=NULL)
	{
		GlobalUnlock(hImgData);
		GlobalFree(hImgData);  
		hImgData=NULL; 
	}
	if((hImgData=GlobalAlloc(GHND,(DWORD)(sizeof(BITMAPINFOHEADER)+NumColors*sizeof(RGBQUAD)+ImgSize)))==NULL)
	{
		AfxMessageBox("Error alloc memory!",MB_OK|MB_ICONEXCLAMATION);
	    file.Close();
		return FALSE;
	}

	////鎖定內存數據區,將圖像數據區內容讀入內存
	LPBITMAPINFOHEADER lpImgData;	//原始邏輯位圖信息頭
	lpImgData=(LPBITMAPINFOHEADER)GlobalLock(hImgData);
	file.Seek(sizeof(BITMAPFILEHEADER),CFile::begin);
	file.Read((void *)lpImgData,(DWORD)(bf.bfSize-sizeof(BITMAPFILEHEADER)));
	file.Close();

	/////////////////////設置調色板/////////////////
	LOGPALETTE *pPal;   //邏輯調色板指針
	LPRGBQUAD	lpRGB;         
	HPALETTE	hPrevPalette;   //前一個調色板句柄
	HLOCAL		hPal;    
	if(hBitmap)
	{
		DeleteObject(hBitmap);
		hBitmap=NULL; 
	}
	if(hPalette)
	{
		hPalette=NULL; 
		DeleteObject(hPalette); 
	}
	if(NumColors)    //NumColors不為零,說明用到了調色板
	{ 
		//為邏輯調色板分配局部內存,大小為邏輯調色板結構長度加NumColors個PALETTENTRY
		hPal=LocalAlloc(LHND,sizeof(LOGPALETTE)+NumColors*sizeof(PALETTEENTRY));
		pPal=(LOGPALETTE *)LocalLock(hPal);  //指針pPal指向該內存區
		//填寫邏輯調色板結構的頭
		pPal->palNumEntries=(WORD)NumColors;
		pPal->palVersion=0x300;    //為什么是0x300?
		  //lpRGB指向的是調色板開始的位置
		lpRGB=(LPRGBQUAD)((LPSTR)lpImgData+(DWORD)sizeof(BITMAPINFOHEADER));
		  //填寫每一項
		for(DWORD i=0;i<NumColors;i++)
		{
			pPal->palPalEntry[i].peRed=lpRGB->rgbRed;
			pPal->palPalEntry[i].peGreen=lpRGB->rgbGreen;
			pPal->palPalEntry[i].peBlue=lpRGB->rgbBlue;
			pPal->palPalEntry[i].peFlags=(BYTE) 0;
			lpRGB++;
		}
		hPalette=CreatePalette(pPal);   //調色板產生
		LocalUnlock(hPal);
		LocalFree(hPal);  //釋放邏輯調色板空間
	}
	if(hPalette)
	{
		hPrevPalette=SelectPalette(pDC->m_hDC,hPalette,FALSE);
		RealizePalette(pDC->m_hDC);  //將現有邏輯調色板影射到系統調色板
	}
	hBitmap=CreateDIBitmap(pDC->m_hDC,(LPBITMAPINFOHEADER)lpImgData,(DWORD)CBM_INIT,
		(LPSTR)lpImgData+sizeof(BITMAPINFOHEADER)+NumColors*sizeof(RGBQUAD),
		(LPBITMAPINFO)lpImgData,DIB_RGB_COLORS);
	if(hPalette && hPrevPalette)
	{
		SelectPalette(pDC->m_hDC,hPrevPalette,FALSE);
		RealizePalette(pDC->m_hDC);   //將現有邏輯調色板影射到系統調色板
	}
    GlobalUnlock(hImgData);   //解鎖內存數據區
	return TRUE;
}


/****************************************************************
 *
 * 函數名稱:
 *  SaveBmpFile();
 *
 * 參數: 
 *  char *inFileName       加載圖像的文件名  
 * 返回值:
 *   TRUE                  成功讀取;
 *   FALSE                 失敗;
 *
 * 說明:
 *    該函數讀入圖像文件文件數據到全局內存句柄hImgData中;
 *
 ****************************************************************/
BOOL MBmpClass::SaveBmpFile(CString fileName)
{
	CFile file;
	if(!(file.Open(fileName,CFile::modeCreate|CFile::modeWrite)))
	{
		AfxMessageBox("文件打開失敗!",MB_OK|MB_ICONINFORMATION);
		return FALSE;
	}

    LPBITMAPINFOHEADER lpImgDatan;	//邏輯位圖信息頭
	lpImgDatan=(LPBITMAPINFOHEADER)GlobalLock(hImgData);

	//寫文件頭
	file.Write((char*)&bf,sizeof(bf));

	//寫信息頭 調色板 數據區
	file.Write( (char*)lpImgDatan,bf.bfSize-sizeof(BITMAPFILEHEADER));
	file.Flush();  //將輸出緩沖區的數據送出,并清出。
	file.Close();

	GlobalUnlock(hImgData);		//解鎖hImgData

	return TRUE;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91浏览器打开| 国产麻豆精品95视频| 中文字幕成人av| 日韩女优av电影| 欧美成人乱码一区二区三区| 日韩三级免费观看| 精品国一区二区三区| 久久综合九色综合久久久精品综合| 欧美一区二区三区四区在线观看| 欧美久久久久久久久中文字幕| 欧美亚州韩日在线看免费版国语版| 在线一区二区三区| 在线观看91视频| 欧美精品丝袜中出| 91精品国产色综合久久ai换脸| 欧美欧美欧美欧美首页| 日韩欧美另类在线| 国产精品视频观看| 国产精品不卡一区二区三区| 亚洲精品高清在线观看| 婷婷一区二区三区| 国产伦理精品不卡| 日本韩国精品在线| 日韩精品一区二区三区视频| 国产欧美一区二区三区鸳鸯浴| 国产精品美女一区二区在线观看| 亚洲欧美日韩一区二区 | 精品一区二区三区影院在线午夜 | 首页综合国产亚洲丝袜| 麻豆国产91在线播放| 高潮精品一区videoshd| 欧美午夜理伦三级在线观看| 精品理论电影在线观看| 亚洲人精品午夜| 美女一区二区在线观看| 91视频观看视频| 欧美一区二区三区不卡| 中文字幕一区二区5566日韩| 日本成人在线看| 91影视在线播放| 日韩欧美在线观看一区二区三区| 国产精品你懂的在线欣赏| 天天av天天翘天天综合网色鬼国产| 激情六月婷婷久久| 欧美日韩中文字幕一区二区| 久久久不卡网国产精品二区| 丝袜脚交一区二区| 91毛片在线观看| 久久亚洲精品小早川怜子| 亚洲一区二区免费视频| 国产福利一区二区三区在线视频| 欧美日韩精品专区| 亚洲天堂免费在线观看视频| 国产一区欧美二区| 日韩一区国产二区欧美三区| 夜夜揉揉日日人人青青一国产精品| 国产一区视频网站| 日韩欧美在线123| 亚洲bt欧美bt精品| 色综合久久久网| 国产精品欧美久久久久一区二区| 精品一区二区在线观看| 日韩一级高清毛片| 日韩二区在线观看| 欧美精品v国产精品v日韩精品| 伊人开心综合网| 成人av综合在线| 国产精品婷婷午夜在线观看| 国产成人99久久亚洲综合精品| 日韩视频永久免费| 日本亚洲三级在线| 日韩三级中文字幕| 日本欧美一区二区在线观看| 91精品国产综合久久婷婷香蕉| 亚洲一区二区三区在线播放| 91久久国产综合久久| 一区二区国产盗摄色噜噜| 日本道色综合久久| 亚洲电影第三页| 精品视频一区二区不卡| 午夜精品成人在线视频| 欧美高清dvd| 免费成人av资源网| 欧美成人激情免费网| 国产一区二区日韩精品| 久久精品亚洲乱码伦伦中文| 国产成人午夜精品影院观看视频| 久久久久国产一区二区三区四区| 粉嫩在线一区二区三区视频| 国产精品久久一卡二卡| 欧美午夜精品一区| 美腿丝袜在线亚洲一区| 国产视频一区二区在线观看| eeuss鲁片一区二区三区在线观看| 国产精品久99| 欧美高清激情brazzers| 国产成人在线网站| 亚洲免费观看高清在线观看| 欧美久久久久久蜜桃| 久久成人精品无人区| 亚洲国产精品t66y| 欧美午夜免费电影| 国产一区二区不卡老阿姨| 一色桃子久久精品亚洲| 欧美日韩国产a| 久久精品噜噜噜成人av农村| 国产午夜精品久久久久久免费视 | 久久精品国产澳门| 国产精品国产三级国产有无不卡| 欧美三区在线观看| 国产福利91精品一区| 亚洲一区二区四区蜜桃| 久久精品夜色噜噜亚洲a∨| 色婷婷av一区二区三区gif| 美女视频一区二区| 亚洲女子a中天字幕| 欧美sm美女调教| 在线亚洲高清视频| 国产精品正在播放| 日本欧美加勒比视频| 亚洲日本va午夜在线电影| 精品国产一区二区三区四区四| 99久久精品免费| 黑人精品欧美一区二区蜜桃| 一区二区在线观看av| 国产亲近乱来精品视频 | 久久夜色精品一区| 欧美视频一区在线| 99精品一区二区| 从欧美一区二区三区| 九色porny丨国产精品| 亚洲小说欧美激情另类| 亚洲色图欧美在线| 欧美国产日韩a欧美在线观看| 91精品国产综合久久久久| 91国偷自产一区二区三区成为亚洲经典 | 久久综合九色综合97_久久久| 欧美性猛交xxxx黑人交| 91蝌蚪国产九色| 丰满白嫩尤物一区二区| 国产酒店精品激情| 激情文学综合丁香| 麻豆国产一区二区| 日韩精品乱码免费| 午夜精品爽啪视频| 亚洲福利一区二区三区| 亚洲激情图片一区| 亚洲人成人一区二区在线观看| 国产精品拍天天在线| 国产精品国产自产拍在线| 国产精品国产自产拍高清av王其| 中文幕一区二区三区久久蜜桃| 国产性做久久久久久| 国产欧美一区二区三区网站| 国产午夜精品一区二区三区嫩草| 久久精品夜夜夜夜久久| 欧美激情中文字幕一区二区| 国产人妖乱国产精品人妖| 国产精品久久久久久久第一福利| 国产精品久久综合| 一区二区三区自拍| 婷婷激情综合网| 久久se精品一区二区| 国产在线不卡视频| www.激情成人| 在线视频一区二区免费| 正在播放亚洲一区| 精品成a人在线观看| 国产精品进线69影院| 一区二区不卡在线播放| 日韩激情中文字幕| 国模大尺度一区二区三区| 成人h精品动漫一区二区三区| 91免费在线视频观看| 欧美图片一区二区三区| 日韩免费观看2025年上映的电影| 精品国产凹凸成av人导航| 国产精品午夜在线| 亚洲第四色夜色| 狠狠色狠狠色合久久伊人| av欧美精品.com| 4438成人网| 中文字幕一区二区不卡| 青娱乐精品视频| 国产激情91久久精品导航| 欧洲一区二区三区免费视频| 91精品国产综合久久香蕉麻豆| 中文字幕精品在线不卡| 亚洲高清不卡在线观看| 国产成人亚洲精品狼色在线 | 日韩欧美卡一卡二| 亚洲丝袜另类动漫二区| 精品一区二区三区在线观看| 91免费小视频| 国产亚洲欧美色| 亚洲国产精品人人做人人爽| 国产精品996| 欧美一级高清大全免费观看| 国产精品欧美一区喷水| 麻豆精品视频在线|