正在加载图片...
s=(unsigned char )(pPtr+x-Line Bytes) se=(unsigned char)"(pPtr+x-LineBytes+ 1); num=nwtn+ne+w+e+sw+s+se if(num=0)∥说明都是黑点 ( pTempPtr+x)=( unsigned char)255;∥删除该黑点 if(hBitmapl=NULL hDc=GetDC(hWnd) ∥)创立一个新的位图 hBitmap=CreateDIBitmap(hDc, (LPBITMAPINFOHEADER)IpTemplmg Data (LONG)CBM INIT ( LPSTR)lp Templmg Data+ sizeof( BITMAPINFOHEADER)+ Num Colors*sizeof(RGBQUAD) (LPBITMAPINFO)IpTemplmg Data DIB RGB COLORS) hf- Creat("c: \\outline. bmp",0) I write(hf, (LPSTR)&bf, sizeof( BITMAPFILEHEADER)) Iwrite(hf, (LPSTR)IpTemplmg Data, BufSize Iclose(hf) 释放内存和资源 Released(hWnd, hDc) Local Unlock (hTemplmg Data); Local Free(hTemplmg Data) Global Unlock(hmg Data) return tRUe 74种子填充 种子填充算法用来在封闭曲线形成的环中填充某中颜色,在这里我们只填充黑色 种子填充其实上是图形学中的算法,其原理是:准备一个堆栈,先将要填充的点push进堆 栈中;以后,每pop出一个点,将该点涂成黑色,然后按左上右下的顺序查看它的四个相邻 点,若为白(表示还没有填充),则将该邻点push进栈。一直循环,直到堆栈为空。此时, 区域内所有的点都被涂成了黑色s=(unsigned char)*(lpPtr+x-LineBytes); se=(unsigned char)*(lpPtr+x-LineBytes+1); num=nw+n+ne+w+e+sw+s+se; if(num==0) //说明都是黑点 *(lpTempPtr+x)=(unsigned char)255; //删除该黑点 } } } if(hBitmap!=NULL) DeleteObject(hBitmap); hDc=GetDC(hWnd); //创立一个新的位图 hBitmap=CreateDIBitmap(hDc,(LPBITMAPINFOHEADER)lpTempImgData, (LONG)CBM_INIT, (LPSTR)lpTempImgData+ sizeof(BITMAPINFOHEADER)+ NumColors*sizeof(RGBQUAD), (LPBITMAPINFO)lpTempImgData, DIB_RGB_COLORS); hf=_lcreat("c:\\outline.bmp",0); _lwrite(hf,(LPSTR)&bf,sizeof(BITMAPFILEHEADER)); _lwrite(hf,(LPSTR)lpTempImgData,BufSize); _lclose(hf); //释放内存和资源 ReleaseDC(hWnd,hDc); LocalUnlock(hTempImgData); LocalFree(hTempImgData); GlobalUnlock(hImgData); return TRUE; } 7.4 种子填充 种子填充算法用来在封闭曲线形成的环中填充某中颜色,在这里我们只填充黑色。 种子填充其实上是图形学中的算法,其原理是:准备一个堆栈,先将要填充的点 push 进堆 栈中;以后,每 pop 出一个点,将该点涂成黑色,然后按左上右下的顺序查看它的四个相邻 点,若为白(表示还没有填充),则将该邻点 push 进栈。一直循环,直到堆栈为空。此时, 区域内所有的点都被涂成了黑色
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有