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

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

?? 堆棧的數(shù)據(jù)結構和操作.txt

?? 堆棧的數(shù)據(jù)結構和操作 ypedef struct{ HGLOBAL hMem //堆棧全局內(nèi)存句柄 POINT *lpMyStack //指向該句柄的指針 LONG ElementsNum /
?? TXT
字號:
//堆棧結構
typedef struct{
HGLOBAL hMem; //堆棧全局內(nèi)存句柄
POINT *lpMyStack; //指向該句柄的指針
LONG ElementsNum; //堆棧的大小
LONG ptr; //指向棧頂?shù)闹羔?}MYSTACK;
//初始化堆棧的操作,第二個參數(shù)指定堆棧的大小
BOOL InitStack(HWND hWnd,LONG StackLen)
{
SeedFillStack.ElementsNum=StackLen; //將堆棧的大小賦值
if((SeedFillStack.hMem=GlobalAlloc(GHND,SeedFillStack.
ElementsNum*sizeof(POINT)))==NULL)
{
//內(nèi)存分配錯誤,返回FALSE;
MessageBox(hWnd,"Error alloc memory!","ErrorMessage",MB_OK|
MB_ICONEXCLAMATION);
return FALSE;
}
SeedFillStack.lpMyStack=(POINT *)GlobalLock(SeedFillStack.hMem);
//緩沖區(qū)全部清零
memset(SeedFillStack.lpMyStack,0,SeedFillStack.ElementsNum*sizeof(POINT));
//堆頂指針為零
SeedFillStack.ptr=0;
//成功,返回TRUE
return TRUE;
}


//析構函數(shù)
void DeInitStack()
{
//釋放內(nèi)存,重置堆棧大小及棧頂指針。
GlobalUnlock(SeedFillStack.hMem);
GlobalFree(SeedFillStack.hMem);
SeedFillStack.ElementsNum=0;
SeedFillStack.ptr=0;
}
//push操作
BOOL MyPush(POINT p)
{
POINT *TempPtr;
if(SeedFillStack.ptr>=SeedFillStack.ElementsNum)
return FALSE; //棧已滿,返回FALSE
//進棧,棧頂指針加1
TempPtr=(POINT *)(SeedFillStack.lpMyStack+SeedFillStack.ptr++);
(*TempPtr).x=p.x;
(*TempPtr).y=p.y;
return TRUE;
}
//pop操作
POINT MyPop()
{
POINT InvalidP;
InvalidP.x=-1;
InvalidP.y=-1;
if(SeedFillStack.ptr<=0)
return InvalidP; //棧為空,返回無效點
SeedFillStack.ptr--; //棧頂指針減1
//返回棧頂點
return *(SeedFillStack.lpMyStack+SeedFillStack.ptr);
}
//判斷堆棧是否為空
BOOL IsStackEmpty()
{
return (SeedFillStack.ptr==0)?TRUE:FALSE;
}
如果讀者對堆棧的概念還不清楚,請參閱有關數(shù)據(jù)結構方面的書籍,這里就不詳述了。
要注意的是:1. 要填充的區(qū)域是封閉的;2. 我們處理的雖然是二值圖,但實際上是256級灰度圖,不過只用到了0和255兩種顏色;3.在菜單中選擇種子填充命令時,提示用戶用鼠標點取一個要填充區(qū)域中的點,處理是在WM_LBUTTONDOWN中。
MYSTACK SeedFillStack;

BOOL SeedFill(HWND hWnd)
{
DWORD BufSize;
LPBITMAPINFOHEADER lpImgData;
HLOCAL hTempImgData;
LPBITMAPINFOHEADER lpTempImgData;
LPSTR lpTempPtr,lpTempPtr1;
HDC hDc;
HFILE hf;
POINT CurP,NeighborP;
//我們處理的實際上是256級灰度圖,不過只用到了0
和255兩種顏色。
if( NumColors!=256){
MessageBox(hWnd,"Must be a mono bitmap with grayscale palette!",
"Error Message",MB_OK|MB_ICONEXCLAMATION);
return FALSE;
}
//原圖緩沖區(qū)的大小
BufSize=bf.bfSize-sizeof(BITMAPFILEHEADER);
//為新圖緩沖區(qū)分配內(nèi)存
if((hTempImgData=LocalAlloc(LHND,BufSize))==NULL)
{
MessageBox(hWnd,"Error alloc memory!","Error Message",MB_OK|
MB_ICONEXCLAMATION);
return FALSE;
}
lpImgData=(LPBITMAPINFOHEADER)GlobalLock(hImgData);
lpTempImgData=(LPBITMAPINFOHEADER)LocalLock(hTempImgData);
//拷貝頭信息和位圖數(shù)據(jù)
memcpy(lpTempImgData,lpImgData,BufSize);
if(!InitStack(hWnd,(LONG)bi.biHeight*bi.biWidth)){ //初始化堆棧
//若失敗,釋放內(nèi)存,返回
LocalUnlock(hTempImgData);
LocalFree(hTempImgData);
GlobalUnlock(hImgData);
return FALSE;
}
lpTempPtr=(char *)lpTempImgData+(BufSize-LineBytes-
SeedPoint.y*LineBytes)+SeedPoint.x;
if(*lpTempPtr==0){
//鼠標點到了黑點上,提示用戶不能選擇邊界上的點,返回FALSE
MessageBox(hWnd,"The point you select is a contour point!","Error Message",MB_OK|MB_ICONEXCLAMATION);
LocalUnlock(hTempImgData);

LocalFree(hTempImgData);
GlobalUnlock(hImgData);
DeInitStack();
return FALSE;
}
//push該點(用戶用鼠標選擇的,處理是在
WM_LBUTTONDOWN中
MyPush(SeedPoint);
while(!IsStackEmpty()) //堆棧不空則一直處理
{
CurP=MyPop(); //pop棧頂?shù)狞c
lpTempPtr=(char *)lpTempImgData+(BufSize-
LineBytes-CurP.y*LineBytes)+CurP.x;
//將該點涂黑
*lpTempPtr=(unsigned char)0;
//左鄰點
if(CurP.x>0) //注意判斷邊界
{
NeighborP.x=CurP.x-1;
NeighborP.y=CurP.y;
lpTempPtr1=lpTempPtr-1;
if(*lpTempPtr1!=0) //如果為白,表示還沒有填,進棧
MyPush(NeighborP);
}
//上鄰點
if(CurP.y>0) //注意判斷邊界
{
NeighborP.x=CurP.x;
NeighborP.y=CurP.y-1;
lpTempPtr1=lpTempPtr+LineBytes;
if(*lpTempPtr1!=0) //如果為白,表示還沒有填,進棧
MyPush(NeighborP);
}
//右鄰點
if(CurP.x<bi.biWidth-1) //注意判斷邊界
{
NeighborP.x=CurP.x+1;
NeighborP.y=CurP.y;
lpTempPtr1=lpTempPtr+1;
if(*lpTempPtr1!=0) //如果為白,表示還沒有填,進棧
MyPush(NeighborP);
}
//下鄰點
if(CurP.y<bi.biHeight-1) //注意判斷邊界

{
NeighborP.x=CurP.x;
NeighborP.y=CurP.y+1;
lpTempPtr1=lpTempPtr-LineBytes;
if(*lpTempPtr1!=0) //如果為白,表示還沒有填,進棧
MyPush(NeighborP);
}
}
//析構堆棧,釋放內(nèi)存
DeInitStack();
if(hBitmap!=NULL)
DeleteObject(hBitmap);
hDc=GetDC(hWnd);
//創(chuàng)建新的位圖
hBitmap=CreateDIBitmap(hDc,(LPBITMAPINFOHEADER)lpTempImgData,
(LONG)CBM_INIT,(LPSTR)lpTempImgData+sizeof(BITMAPINFOHEADER) +
NumColors*sizeof(RGBQUAD), (LPBITMAPINFO)lpTempImgData, DIB_RGB_COLORS);
hf=_lcreat("c:\\seed.bmp",0);
_lwrite(hf,(LPSTR)&bf,sizeof(BITMAPFILEHEADER));
_lwrite(hf,(LPSTR)lpTempImgData,BufSize);
_lclose(hf);
//釋放內(nèi)存和資源
ReleaseDC(hWnd,hDc);
LocalUnlock(hTempImgData);
LocalFree(hTempImgData);
GlobalUnlock(hImgData);
return TRUE;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲视频在线观看三级| 国产精品一区三区| 国产精品的网站| 国产亚洲欧美一区在线观看| 日韩欧美亚洲一区二区| 91精品在线麻豆| 91精品国产综合久久小美女| 欧美高清www午色夜在线视频| 欧美日韩久久不卡| 欧美精品高清视频| 精品国产乱码久久久久久闺蜜| 91精品国产综合久久蜜臀| 欧美精品日韩精品| 日韩精品一区二区三区蜜臀| 久久综合九色综合欧美98| 久久精品视频在线看| 国产精品丝袜一区| 亚洲精品国产成人久久av盗摄 | 欧美成人一区二区三区| 91麻豆精品91久久久久同性| 欧美一卡在线观看| 久久夜色精品一区| 成人欧美一区二区三区小说| 亚洲一区视频在线| 蜜桃91丨九色丨蝌蚪91桃色| 国产高清不卡二三区| 99九九99九九九视频精品| 91黄色激情网站| 日韩精品中文字幕一区| 亚洲国产精品国自产拍av| 亚洲人成在线播放网站岛国| 天天综合色天天综合色h| 极品少妇xxxx偷拍精品少妇| 91天堂素人约啪| 欧美美女喷水视频| 久久无码av三级| 亚洲精品国产无天堂网2021 | 精品日韩欧美在线| 亚洲18影院在线观看| 麻豆国产精品一区二区三区 | 亚洲3atv精品一区二区三区| 国产综合色产在线精品| 日本韩国精品一区二区在线观看| 日韩免费成人网| 一区二区三区四区亚洲| 国产黄色成人av| 欧美一区2区视频在线观看| 亚洲色图20p| 国产一区二区三区黄视频 | 国产亚洲成年网址在线观看| 无吗不卡中文字幕| 成人影视亚洲图片在线| 日韩限制级电影在线观看| 亚洲男人天堂一区| 国产美女在线观看一区| 91精品国产欧美一区二区| 亚洲品质自拍视频| 国产suv精品一区二区三区| 欧美丰满少妇xxxbbb| 亚洲精品少妇30p| 97久久超碰国产精品电影| 国产亚洲欧美激情| 激情综合网av| 欧美一区二区视频在线观看| 亚洲一区二区免费视频| 91美女片黄在线| 亚洲日本欧美天堂| av网站一区二区三区| 国产日韩欧美综合在线| 久久av老司机精品网站导航| 欧美日韩一区不卡| 一区二区免费在线| 欧美午夜寂寞影院| 五月激情六月综合| 国产精品久久久久影院亚瑟| 国产一区二区免费视频| 精品成人佐山爱一区二区| 美国三级日本三级久久99| 9191久久久久久久久久久| 天天色天天操综合| 91麻豆精品国产91久久久久久久久| 亚洲精品视频免费看| 色网站国产精品| 亚洲一区二区在线免费看| 欧美网站大全在线观看| 亚洲成av人片一区二区梦乃| 在线观看三级视频欧美| 亚洲主播在线播放| 777欧美精品| 强制捆绑调教一区二区| 精品免费日韩av| 国产精品正在播放| 国产精品久久久久久久岛一牛影视| 99精品久久99久久久久| 亚洲视频精选在线| 欧美女孩性生活视频| 免费观看久久久4p| 国产午夜亚洲精品理论片色戒| 成人的网站免费观看| 一区二区三区在线观看国产| 91麻豆精品国产91久久久久久| 激情文学综合网| 亚洲国产精品成人综合| 在线一区二区视频| 久久97超碰色| 亚洲视频免费在线观看| 欧美中文一区二区三区| 蜜臀av一区二区三区| 国产午夜三级一区二区三| 在线一区二区视频| 久久99久久久久| 亚洲欧洲制服丝袜| 亚洲精品在线三区| 99精品视频一区二区| 免费欧美日韩国产三级电影| 日本一区二区三区四区在线视频| 色婷婷综合久久久久中文 | 亚洲一区二区视频在线观看| 日韩欧美中文一区| 不卡欧美aaaaa| 国内精品自线一区二区三区视频| 综合色天天鬼久久鬼色| 精品免费日韩av| 欧美日韩国产精选| 99久久久无码国产精品| 麻豆精品一区二区三区| 亚洲最新视频在线播放| 久久婷婷成人综合色| 欧美一卡二卡三卡四卡| 一本色道久久综合狠狠躁的推荐| 国产精一品亚洲二区在线视频| 艳妇臀荡乳欲伦亚洲一区| 国产日韩精品一区二区三区在线| 777色狠狠一区二区三区| 色哟哟国产精品| 不卡一区二区在线| 国产麻豆午夜三级精品| 日本人妖一区二区| 亚洲国产乱码最新视频| 中文字幕一区三区| 久久女同互慰一区二区三区| 日韩美一区二区三区| 欧美日韩一区二区三区免费看 | 欧美aa在线视频| 夜色激情一区二区| 亚洲日本青草视频在线怡红院 | 欧美一个色资源| 欧美精品丝袜中出| 欧美日韩成人一区二区| 欧美日韩一区二区三区高清 | 日本欧美肥老太交大片| 亚洲成人高清在线| 亚洲一二三四在线观看| 亚洲一区二区三区国产| 亚洲自拍都市欧美小说| 亚洲成人一区二区在线观看| 亚洲成a人片综合在线| 亚洲国产一区在线观看| 亚洲一区国产视频| 日韩中文字幕亚洲一区二区va在线| 丝瓜av网站精品一区二区| 日韩电影在线一区二区| 免费成人小视频| 国产成人av一区二区三区在线观看| 国产乱码精品一区二区三区忘忧草 | 免费成人在线网站| 韩国三级在线一区| 国产精品自产自拍| 成人免费视频一区| 91精品91久久久中77777| 欧美日韩久久不卡| 欧美一级在线观看| 国产亚洲精品bt天堂精选| 国产精品久久久久影院亚瑟| 一区二区三区免费网站| 丝袜亚洲另类欧美| 国产高清久久久| 在线观看日韩av先锋影音电影院| 337p亚洲精品色噜噜狠狠| 精品久久久久久久一区二区蜜臀| 日本一区二区三区久久久久久久久不| 亚洲欧洲av色图| 丝袜亚洲另类欧美| 风间由美一区二区三区在线观看| 色综合中文综合网| 久久久久久久久久看片| 自拍视频在线观看一区二区| 日韩国产在线观看一区| 国产大陆精品国产| 欧美日韩精品福利| 国产精品免费视频网站| 亚洲国产精品久久艾草纯爱 | 一区二区三区欧美日韩| 久久国产剧场电影| 色香蕉成人二区免费| 欧美成va人片在线观看| 亚洲欧美日韩在线播放| 国产最新精品免费| 欧美日韩国产综合一区二区| 国产精品毛片无遮挡高清|