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

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

?? dibapi.cpp

?? 將數字圖像處理的一般算法都集中在一個MFC的框架中
?? CPP
字號:
#include"stdafx.h"
#include"DIBapi.h"
#include<io.h>
#include<errno.h>
#include<math.h>
#include<direct.h>
#define DIBFILETYPE ((WORD) ('M'<<8)|'B')

/***
*
* PaintDIB()
*
***/
BOOL WINAPI PaintDIB(HDC hDC,			//out DC
		     LPRECT lpDCRect,	//paint Rect area
		     HDIB hDIB,			//pointer to DIB
		     LPRECT lpDIBRect,	//the area to output
		     CPalette* pPal		//pointer to palette
		     )
{
	//BITMAPINFOHEADER
	LPSTR lpDIBHdr;
	//BIT pixels
	LPSTR lpDIBBits;
	//return
	BOOL bSuccess=FALSE;
	//DIB palette handle
	HPALETTE hPal=NULL;
	//old palette handle
	HPALETTE hOldPal=NULL;
	
	if(hDIB == NULL)
	{
		return FALSE;
	}
	
	lpDIBHdr =(LPSTR)::GlobalLock((HGLOBAL)hDIB);
	
	lpDIBBits =::FindDIBBits(lpDIBHdr);
	
	if(pPal !=NULL)
	{
		hPal =(HPALETTE)pPal->m_hObject;
		hOldPal =::SelectPalette(hDC,hPal,TRUE);
	}
	
	::SetStretchBltMode(hDC,COLORONCOLOR);
	
	if((RECTWIDTH(lpDCRect) ==RECTWIDTH(lpDIBRect)) &&
		(RECTHEIGHT(lpDCRect) ==RECTHEIGHT(lpDIBRect)))
	{
		bSuccess =::SetDIBitsToDevice(hDC,
			lpDCRect->left,
			lpDCRect->top,
			RECTWIDTH(lpDCRect),
			(int)DIBHeight(lpDIBHdr),
			lpDIBRect->left,
			lpDIBRect->top,
			0,
			(WORD)DIBHeight(lpDIBHdr),
			lpDIBBits,
			(LPBITMAPINFO)lpDIBHdr,
			DIB_RGB_COLORS);
	}
	else
	{
		bSuccess = ::StretchDIBits(hDC,
			lpDCRect->left,
			lpDCRect->top,
			RECTWIDTH(lpDCRect),
			RECTHEIGHT(lpDCRect),
			lpDIBRect->left,
			lpDIBRect->top,
			RECTWIDTH(lpDIBRect),
			RECTHEIGHT(lpDIBRect),
			lpDIBBits,
			(LPBITMAPINFO)lpDIBHdr,
			DIB_RGB_COLORS,
			SRCCOPY);
	}
	
	::GlobalUnlock((HGLOBAL)hDIB);
	
	if(hOldPal !=NULL)
	{
		::SelectPalette(hDC,hOldPal,TRUE);
	}
	
	return bSuccess;
}

BOOL WINAPI PaintDIBBits(HDC hDC,			//out DC
			 LPRECT lpDCRect,	//paint Rect area
			 HDIB hDIB,			//pointer to DIB
			 LPBYTE lpDIBBits,
			 LPRECT lpDIBRect,	//the area to output
			 CPalette* pPal		//pointer to palette
			 )
{
	//BITMAPINFOHEADER
	LPSTR lpDIBHdr;
	//return
	BOOL bSuccess=FALSE;
	//DIB palette handle
	HPALETTE hPal=NULL;
	//old palette handle
	HPALETTE hOldPal=NULL;
	
	if(hDIB == NULL)
	{
		return FALSE;
	}
	
	lpDIBHdr =(LPSTR)::GlobalLock((HGLOBAL)hDIB);
	//
	if(pPal !=NULL)
	{
		hPal =(HPALETTE)pPal->m_hObject;
		hOldPal =::SelectPalette(hDC,hPal,TRUE);
	}
	
	::SetStretchBltMode(hDC,COLORONCOLOR);
	
	if((RECTWIDTH(lpDCRect) ==RECTWIDTH(lpDIBRect)) &&
		(RECTHEIGHT(lpDCRect) ==RECTHEIGHT(lpDIBRect)))
	{
		bSuccess =::SetDIBitsToDevice(hDC,
			lpDCRect->left,
			lpDCRect->top,
			RECTWIDTH(lpDCRect),
			(int)DIBHeight(lpDIBHdr),
			lpDIBRect->left,
			lpDIBRect->top,
			0,
			(WORD)DIBHeight(lpDIBHdr),
			lpDIBBits,
			(LPBITMAPINFO)lpDIBHdr,
			DIB_RGB_COLORS);
	}
	else
	{
		bSuccess = ::StretchDIBits(hDC,
			lpDCRect->left,
			lpDCRect->top,
			RECTWIDTH(lpDCRect),
			RECTHEIGHT(lpDCRect),
			lpDIBRect->left,
			lpDIBRect->top,
			RECTWIDTH(lpDIBRect),
			RECTHEIGHT(lpDIBRect),
			lpDIBBits,
			(LPBITMAPINFO)lpDIBHdr,
			DIB_RGB_COLORS,
			SRCCOPY);
	}
	
	::GlobalUnlock((HGLOBAL)hDIB);
	
	if(hOldPal !=NULL)
	{
		::SelectPalette(hDC,hOldPal,TRUE);
	}
	
	return bSuccess;
}

/***
*
* GetSystemPalette()
*
***/
HPALETTE WINAPI GetSystemPalette(void)
{
	//DC handle
	HDC hDC;
	
	//palette handle
	static HPALETTE hPal=NULL;
	
	//logic palette pointer
	LPLOGPALETTE lpLogPal;
	
	//logic palette handle
	HANDLE hLogPal;
	
	//color number
	int nColors;
	
	hDC =GetDC(NULL);
	
	if(hDC ==NULL)
		return NULL;
	
	nColors =(1<<(GetDeviceCaps(hDC,BITSPIXEL)*GetDeviceCaps(hDC,PLANES)));
	ASSERT(nColors);
	
	hLogPal =GlobalAlloc(GHND,sizeof(LOGPALETTE)+nColors*sizeof(PALETTEENTRY));
	
	if(hLogPal ==NULL)
		return NULL;
	
	lpLogPal =(LPLOGPALETTE)GlobalLock(hLogPal);
	
	lpLogPal->palVersion =PALVERSION;
	
	lpLogPal->palNumEntries =nColors;
	
	GetSystemPaletteEntries(hDC,0,nColors,(LPPALETTEENTRY)(lpLogPal->palPalEntry));
	
	hPal =CreatePalette(lpLogPal);
	
	GlobalUnlock(hLogPal);
	
	GlobalFree(hLogPal);
	
	ReleaseDC(NULL,hDC);
	
	return hPal;
}

/***
*
* FindDIBBits()
*
***/
LPSTR WINAPI FindDIBBits(LPSTR lpbi)
{
	return (lpbi+*(LPDWORD)lpbi+::PaletteSize(lpbi));
}

/***
*
* PaletteSize()
*
***/
WORD WINAPI PaletteSize(LPSTR lpbi)
{
	if(IS_WIN30_DIB(lpbi))
	{
		return (WORD)(::DIBNumColors(lpbi)*sizeof(RGBQUAD));
	}
	else
	{
		return (WORD)(::DIBNumColors(lpbi)*sizeof(RGBTRIPLE));
	}
}

/***
*
* DIBNumColors()
*
***/
WORD WINAPI DIBNumColors(LPSTR lpbi)
{
	//bits per pixel
	WORD wBitCount;
	
	if(IS_WIN30_DIB(lpbi))
	{
		//number of colors actually used
		DWORD dwClrUsed;
		
		dwClrUsed =((LPBITMAPINFOHEADER)lpbi)->biClrUsed;
		if(dwClrUsed !=0)
		{
			return (WORD)dwClrUsed;
		}
	}
	
	if(IS_WIN30_DIB(lpbi))
	{
		wBitCount =((LPBITMAPINFOHEADER)lpbi)->biBitCount;
	}
	else
	{
		wBitCount =((LPBITMAPCOREHEADER)lpbi)->bcBitCount;
	}
	
	switch(wBitCount)
	{
	case 1:
		return 2;
	case 4:
		return 16;
	case 8:
		return 256;
	default:
		return 0;
	}
}

/***
*
* DIBBitCount()
*
***/
WORD WINAPI DIBBitCount(LPSTR lpbi)
{
	WORD wBitCount;
	
	if(IS_WIN30_DIB(lpbi))
	{
		wBitCount =((LPBITMAPINFOHEADER)lpbi)->biBitCount;
	}
	else
	{
		wBitCount =((LPBITMAPCOREHEADER)lpbi)->bcBitCount;
	}
	
	return wBitCount;
}

/***
*
* DIBHeight()
*
***/
DWORD WINAPI DIBHeight(LPSTR lpDIB)
{
	LPBITMAPINFOHEADER lpbmi;
	
	LPBITMAPCOREHEADER lpbmc;
	
	lpbmi =(LPBITMAPINFOHEADER)lpDIB;
	
	lpbmc =(LPBITMAPCOREHEADER)lpDIB;
	
	if(IS_WIN30_DIB(lpDIB))
	{
		return lpbmi->biHeight;
	}
	else
	{
		return (DWORD)lpbmc->bcHeight;
	}
}

/***
*
* DIBWidth()
*
***/
DWORD WINAPI DIBWidth(LPSTR lpDIB)
{
	LPBITMAPINFOHEADER lpbmi;
	
	LPBITMAPCOREHEADER lpbmc;
	
	lpbmi =(LPBITMAPINFOHEADER)lpDIB;
	
	lpbmc =(LPBITMAPCOREHEADER)lpDIB;
	
	if(IS_WIN30_DIB(lpDIB))
	{
		return lpbmi->biWidth;
	}
	else
	{
		return (DWORD)lpbmc->bcWidth;
	}
}

/***
*
* ReadDIBFile()
*
***/
HDIB WINAPI ReadDIBFile(CFile& file)
{
	BITMAPFILEHEADER bmfHeader;
	
	DWORD dwBitsSize;
	
	HDIB hDIB;
	
	LPSTR pDIB;
	
	dwBitsSize =file.GetLength();
	
	if(file.Read((LPSTR)&bmfHeader,sizeof(bmfHeader)) !=sizeof(bmfHeader))
	{
		return NULL;
	}
	
	if(bmfHeader.bfType !=DIBFILETYPE)
	{
		return NULL;
	}
	
	hDIB =(HDIB)::GlobalAlloc(GMEM_MOVEABLE|GMEM_ZEROINIT,dwBitsSize);
	
	if(!hDIB)
	{
		return NULL;
	}
	
	pDIB =(LPSTR)::GlobalLock((HGLOBAL)hDIB);
	
	if(file.ReadHuge(pDIB,dwBitsSize-sizeof(BITMAPFILEHEADER)) !=dwBitsSize-sizeof(BITMAPFILEHEADER))
	{
		::GlobalUnlock((HGLOBAL)hDIB);
		
		::GlobalFree((HGLOBAL)hDIB);
		
		return NULL;
	}
	
	::GlobalUnlock((HGLOBAL)hDIB);
	
	return hDIB;
}

/***
*
* CreateDIBPalette()
*
***/
BOOL WINAPI CreateDIBPalette(HDIB hDIB,CPalette* pPal)
{
	LPLOGPALETTE lpPal;
	
	HANDLE hLogPal;
	
	HPALETTE hPal =NULL;
	
	int i;
	
	WORD wNumColors;
	
	LPSTR lpbi;
	
	LPBITMAPINFO lpbmi;
	
	LPBITMAPCOREINFO lpbmc;
	
	BOOL bWinStyleDIB;
	
	BOOL bResult =FALSE;
	
	if(!hDIB)
	{
		return FALSE;
	}
	
	lpbi =(LPSTR)::GlobalLock((HGLOBAL)hDIB);
	
	lpbmi =(LPBITMAPINFO)lpbi;
	
	lpbmc =(LPBITMAPCOREINFO)lpbi;
	
	wNumColors =::DIBNumColors(lpbi);
	
	if(TRUE)//wNumColors !=0)
	{
		if(wNumColors==0)
		{
			hLogPal =::GlobalAlloc(GHND,sizeof(LOGPALETTE)+sizeof(PALETTEENTRY)*256);
		}
		else
		{
			hLogPal =::GlobalAlloc(GHND,sizeof(LOGPALETTE)+sizeof(PALETTEENTRY)*wNumColors);
		}
		if(!hLogPal)
		{
			::GlobalUnlock((HGLOBAL)hDIB);
			return FALSE;
		}
		lpPal =(LPLOGPALETTE)::GlobalLock((HGLOBAL)hLogPal);
		
		lpPal->palVersion =PALVERSION;
		
		if(wNumColors==0)
		{lpPal->palNumEntries = 256;
		}
		else
		{lpPal->palNumEntries =(WORD)wNumColors;
		}
		
		
		bWinStyleDIB =IS_WIN30_DIB(lpbi);
		if(wNumColors!=0)
		{	
			for(i =0;i <(int)wNumColors;i++)
			{
				if(bWinStyleDIB)
				{
					lpPal->palPalEntry[i].peRed =lpbmi->bmiColors[i].rgbRed;
					lpPal->palPalEntry[i].peGreen =lpbmi->bmiColors[i].rgbGreen;
					lpPal->palPalEntry[i].peBlue =lpbmi->bmiColors[i].rgbBlue;
					lpPal->palPalEntry[i].peFlags =0;
				}
				
				else
				{
					lpPal->palPalEntry[i].peRed =lpbmc->bmciColors[i].rgbtRed;
					lpPal->palPalEntry[i].peGreen =lpbmc->bmciColors[i].rgbtGreen;
					lpPal->palPalEntry[i].peBlue =lpbmc->bmciColors[i].rgbtBlue;
					lpPal->palPalEntry[i].peFlags =0;
				}
			}
		}
		else
		{
			for(int i =0; i<256; i++)
			{
				lpPal->palPalEntry[i].peRed =(BYTE)i;
				lpPal->palPalEntry[i].peGreen =(BYTE)i;
				lpPal->palPalEntry[i].peBlue =(BYTE)i;
				lpPal->palPalEntry[i].peFlags =0;
			}
		}
		
		bResult =pPal->CreatePalette(lpPal);
		
		::GlobalUnlock((HGLOBAL)hLogPal);
		
		::GlobalFree((HGLOBAL)hLogPal);
	}
	
	::GlobalUnlock((HGLOBAL)hDIB);
	
	return bResult;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日本在线播放| 亚洲蜜桃精久久久久久久| 久久精品人人爽人人爽| 亚洲啪啪综合av一区二区三区| 日韩精品一区第一页| 成人动漫av在线| 精品乱人伦小说| 一区二区成人在线| 丰满岳乱妇一区二区三区| 69p69国产精品| 一区二区在线观看不卡| 国产成人精品三级| 日韩一区二区三区av| 亚洲一级二级在线| 97精品视频在线观看自产线路二| 欧美一级精品在线| 亚洲综合另类小说| 97se亚洲国产综合自在线不卡 | 亚洲免费av网站| 国产精品911| 久久蜜桃一区二区| 捆绑调教美女网站视频一区| 欧美日韩一区二区欧美激情 | 一区二区激情视频| av在线播放成人| 国产午夜精品久久久久久久| 韩国v欧美v亚洲v日本v| 欧美成人一区二区三区在线观看 | 亚洲欧洲一区二区三区| 国产成人综合网| 久久久久国产精品免费免费搜索| 日本vs亚洲vs韩国一区三区二区 | 亚洲精品乱码久久久久久久久| 国产精品羞羞答答xxdd| 久久久www成人免费无遮挡大片| 免费成人美女在线观看.| 欧美日韩不卡视频| 日韩激情视频在线观看| 欧美一区2区视频在线观看| 午夜精品一区在线观看| 在线电影一区二区三区| 日韩av电影免费观看高清完整版 | 午夜精品在线看| 5858s免费视频成人| 日韩制服丝袜av| 日韩欧美色综合网站| 精品一区二区三区免费播放| 精品国产髙清在线看国产毛片| 免费人成黄页网站在线一区二区| 欧美一区三区四区| 久久91精品久久久久久秒播| 精品国产欧美一区二区| 国产黑丝在线一区二区三区| 国产精品色一区二区三区| eeuss国产一区二区三区| 亚洲精品国产视频| 欧美人与性动xxxx| 狠狠色2019综合网| 中文字幕欧美日韩一区| 日本伦理一区二区| 日本 国产 欧美色综合| 久久嫩草精品久久久精品| 99久久99久久综合| 午夜精品久久一牛影视| 精品国产一区二区国模嫣然| yourporn久久国产精品| 午夜av区久久| 26uuu色噜噜精品一区二区| jlzzjlzz亚洲日本少妇| 五月综合激情网| 中文字幕免费一区| 欧美日韩电影在线| 国产.欧美.日韩| 香蕉久久夜色精品国产使用方法| 日韩欧美精品在线视频| 99精品国产一区二区三区不卡| 午夜免费欧美电影| 国产欧美一区二区精品仙草咪| 91麻豆.com| 国产美女精品一区二区三区| 亚洲午夜免费福利视频| 久久综合九色综合久久久精品综合| 99精品国产91久久久久久| 午夜精品久久久| 成人av免费在线播放| 成人综合婷婷国产精品久久蜜臀 | 日韩和欧美一区二区| 国产欧美1区2区3区| 欧美精品免费视频| av不卡在线播放| 99国产精品一区| 国产精品亚洲人在线观看| 视频在线观看一区二区三区| 国产精品久久久爽爽爽麻豆色哟哟| 欧美一区日韩一区| 日本高清不卡一区| 成人激情av网| 国产精品一区在线观看你懂的| 亚洲va在线va天堂| 亚洲精品亚洲人成人网| 中文一区在线播放| 2022国产精品视频| 欧美丰满少妇xxxbbb| 欧美性受极品xxxx喷水| 91免费在线视频观看| 国产**成人网毛片九色| 国产乱码精品一区二区三区忘忧草| 天堂成人国产精品一区| 一区二区视频在线| 亚洲女人小视频在线观看| 国产精品国产馆在线真实露脸| 久久综合网色—综合色88| 欧美大胆人体bbbb| 精品欧美黑人一区二区三区| 7777精品伊人久久久大香线蕉 | 国产高清亚洲一区| 精品无码三级在线观看视频| 美女在线视频一区| 美女视频黄频大全不卡视频在线播放| 水蜜桃久久夜色精品一区的特点| 一区二区三区视频在线观看| 亚洲激情中文1区| 亚洲精品成人精品456| 一区二区三区在线看| 亚洲最新视频在线观看| 一区二区三区四区中文字幕| 亚洲一区二三区| 丝袜美腿成人在线| 免费观看一级欧美片| 久久99精品视频| 国产suv一区二区三区88区| 国产在线播精品第三| 国产成人在线视频免费播放| 成人av在线资源| 色老头久久综合| 51久久夜色精品国产麻豆| 日韩欧美不卡一区| 国产欧美一区二区精品性色| 中文字幕在线一区免费| 亚洲免费av网站| 日韩精品色哟哟| 狠狠色丁香久久婷婷综合丁香| 成人精品国产福利| 在线观看成人免费视频| 欧美一区二区大片| 国产偷国产偷亚洲高清人白洁| 亚洲图片你懂的| 日韩成人午夜电影| 国产91在线看| 在线观看亚洲精品| 欧美成人伊人久久综合网| 国产精品色呦呦| 三级在线观看一区二区| 国产精品自拍一区| 欧美自拍偷拍一区| 欧美成人精品3d动漫h| 亚洲欧美在线aaa| 日本伊人午夜精品| 丁香亚洲综合激情啪啪综合| 欧美日韩一区二区三区不卡| 欧美精品一区二区蜜臀亚洲| 亚洲欧洲成人精品av97| 人人精品人人爱| 91视频国产资源| 精品精品国产高清一毛片一天堂| 亚洲免费观看高清完整版在线| 久久99最新地址| 欧美在线你懂的| 日本一区二区三区高清不卡| 日韩在线一区二区三区| 99re免费视频精品全部| 精品美女被调教视频大全网站| 亚洲精品免费播放| 国产成人8x视频一区二区| 91精品国产综合久久精品| 亚洲视频一二三| 国产在线观看一区二区| 欧美日韩黄色影视| 成人免费视频在线观看| 国产一区啦啦啦在线观看| 欧美日本在线一区| 一区二区高清视频在线观看| 成人午夜伦理影院| 久久久青草青青国产亚洲免观| 爽爽淫人综合网网站 | 国产91丝袜在线18| 欧美男女性生活在线直播观看| 成人欧美一区二区三区白人| 国产一区二区三区精品视频| 7777精品伊人久久久大香线蕉的| 一区二区三区在线视频免费| 成人激情校园春色| 国产亚洲精久久久久久| 精品在线视频一区| 日韩欧美中文字幕公布| 日本va欧美va精品发布| 欧美丰满一区二区免费视频| 性久久久久久久久久久久| 色94色欧美sute亚洲线路一ni| 最新日韩av在线|