freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于windows的圖像處理(vc)(參考版)

2025-06-29 06:06本頁面
  

【正文】 OffBits,SrcBufSize,DstBufSize,DstLineBytes。 dlgInputBox = NULL。 ZoomRatio=。 return TRUE。 LocalFree(hTempImgData)。 ReleaseDC(hWnd,hDc)。 _lclose(hf)。DstBf,sizeof(BITMAPFILEHEADER))。hf=_lcreat(c:\\,0)。 DeleteObject(hBitmap)。 *lpTempPtr=*lpPtr。 lpPtr=(char *)lpImgData+(SrcBufSizeLineBytesy0*LineBytes)+x0。 x0= y1。x1++){ for(x1=0。y1Hnew。DstBi,sizeof(BITMAPINFOHEADER))。 =Hnew。 =DstBufSize+sizeof(BITMAPFILEHEADER)。DstBi,(char *)amp。bf,sizeof(BITMAPFILEHEADER))。 memcpy((char *)amp。 //頭信息中做一些必要的改變,這一點(diǎn)非常重要 memset(lpTempPtr,(BYTE)255,DstBufSize)。lpPtr=(char *)lpImgData。return FALSE。 { DstBufSize=(DWORD)(sizeof(BITMAPINFOHEADER)+NumColors*sizeof(RGBQUAD)+(DWORD)DstLineBytes*Hnew)。 ImgHeight=Hnew。 SrcBufSize=OffBits+*LineBytes。Hnew = (DWORD)。 DstBi。 BITMAPINFOHEADER BITMAPFILEHEADER DWORD hDc。 HDC DWORD LPSTR LPBITMAPINFOHEADER HLOCAL LPSTRLPBITMAPINFOHEADER 鏡象變換的源代碼如下:BOOL Transpose(HWND hWnd){DWORD轉(zhuǎn)置的變換矩陣很簡單: ()要注意的是,轉(zhuǎn)置和旋轉(zhuǎn)900是有區(qū)別的,不信你可以試試:怎么旋轉(zhuǎn)。 return TRUE。 LocalFree(hTempImgData)。 ReleaseDC(hWnd,hDc)。 _lclose(hf)。bf,sizeof(BITMAPFILEHEADER))。 hf=_lcreat(c:\\,0)。 hf=_lcreat(c:\\,0)。 hBitmap=CreateDIBitmap(hDc,(LPBITMAPINFOHEADER)lpTempImgData,(LONG)CBM_INIT,(LPSTR)lpTempImgData+sizeof(BITMAPINFOHEADER)+NumColors*sizeof(RGBQUAD),(LPBITMAPINFO)lpTempImgData, DIB_RGB_COLORS)。 if(hBitmap!=NULL) *lpTempPtr=*lpPtr。 lpTempPtr=(char *)lpTempImgData+(BufSizeLineBytesy1*LineBytes)+x1。 lpPtr=(char *)lpImgData+(BufSizeLineBytesy0*LineBytes)+x0。 y0=。 x0=x1。x1。y1。 else{ //垂直鏡象 }} //x1++){ for(x1=0。y1++) for(y1=0。memcpy(lpTempPtr,lpPtr,OffBits)。lpTempPtr=(char *)lpTempImgData。 lpTempImgData=(LPBITMAPINFOHEADER)LocalLock(hTempImgData)。 return FALSE。 BufSize=OffBits+*LineBytes。 x0,y0,x1,y1。 LONG hDc。 HDC LPSTR LPBITMAPINFOHEADER HLOCAL LPSTRLPBITMAPINFOHEADER DWORDBOOL Mirror(HWND hWnd,BOOL XDirection) //Xdirection為TRUE時(shí)表示水平鏡象,為FALSE時(shí)表示垂直鏡象變換{設(shè)原圖寬為w,高為h,變換后,圖的寬和高不變。 鏡象鏡象(mirror)分水平鏡象和垂直鏡象兩種。 旋轉(zhuǎn) }GlobalUnlock(hImgData)。LocalUnlock(hTempImgData)。_lclose(hf)。DstBf,sizeof(BITMAPFILEHEADER))。//將旋轉(zhuǎn)后的圖象存成文件hf=_lcreat(c:\\,0)。if(hBitmap!=NULL)DeleteObject(hBitmap)。 } //進(jìn)行象素的復(fù)制 { //在原圖范圍內(nèi) (y0Hold)) (y0=0) amp。 (x0Wold) amp。 if( (x0=0) amp。 x0= (DWORD)(x1*cosa+y1*sina+num1)。 //x0,y0為對應(yīng)的原圖上的坐標(biāo)x1++){ for(x1=0。y1Hnew。DstBi,sizeof(BITMAPINFOHEADER))。=Hnew。//做一些必要的改變,這一點(diǎn)特別要注意=DstBufSize+sizeof(BITMAPFILEHEADER)。DstBi,(char *)amp。bf,sizeof(BITMAPFILEHEADER))。//得到新的BITMAPFILEDER和BITMAPINFOHERDERmemcpy((char *)amp。//將新的緩沖區(qū)中的每個(gè)字節(jié)都填成255,這樣以后未處理的象素就是白色memset(lpTempPtr,(BYTE)255,DstBufSize)。lpPtr=(char *)lpImgData。 //失敗,返回}//lpImgData為指向原來位圖數(shù)據(jù)的指針lpImgData=(LPBITMAPINFOHEADER)GlobalLock(hImgData)。 //要開的緩沖區(qū)的大小//為新產(chǎn)生的位圖分配緩沖區(qū)內(nèi)存if((hTempImgData=LocalAlloc(LHND,DstBufSize))==NULL){MessageBox(hWnd,Error alloc memory!,Error Message,MB_OK|MB_ICONEXCLAMATION)。//新圖每行占用的字節(jié)DstLineBytes=(DWORD)WIDTHBYTES(Wnew*)。//顯示時(shí),采用新圖的寬度和高度,ImgWidth=Wnew。//OffBits為BITMAPINFOHEADER結(jié)構(gòu)長度加調(diào)色板的大小OffBits=(BITMAPFILEHEADER)。//計(jì)算矩陣()中的兩個(gè)常數(shù),這樣不用以后每次都計(jì)算了num1=(float)( *Wnew**Hnew*sina+*Wold)。//計(jì)算新圖的寬度,高度Wnew = (DWORD)(max(fabs(DstX4DstX1), fabs(DstX3DstX2))+)。DstX4=cosa*SrcX4+sina*SrcY4。DstX3=cosa*SrcX3+sina*SrcY3。DstX2=cosa*SrcX2+sina*SrcY2。//新圖四個(gè)角的坐標(biāo)DstX1=cosa*SrcX1+sina*SrcY1。SrcX4=(float)(*Wold)。SrcX3=(float)(*Wold)。SrcX2=(float)(*Wold)。//原圖的四個(gè)角的坐標(biāo)SrcX1=(float)(*Wold)。//原圖的寬度和高度Wold=。cosa=(float)cos((double)RotateAngle)。FreeProcInstance ( (FARPROC) dlgInputBox )。//出現(xiàn)對話框,輸入旋轉(zhuǎn)角度(順時(shí)針方向)dlgInputBox = (DLGPROC) MakeProcInstance ( (FARPROC)InputBox,ghInst )。 DstBf。BITMAPFILEHEADER //cos(a),sin(a)。 x0,y0,x1,y1。 hf。 hDc。 Wold,Hold,Wnew,Hnew。 DstX3,DstY3,DstX4,DstY4。 DstX1,DstY1,DstX2,DstY2。floatfloat lpTempPtr。 lpTempImgData。LPBITMAPINFOHEADER HLOCAL lpImgData。LPBITMAPINFOHEADER dlgInputBox = NULL。源程序如下:define PI define RADIAN(angle) ((angle)*PI/) //角度到弧度轉(zhuǎn)化的宏BOOL Rotation(HWND hWnd){DLGPROC要注意的是,由于有浮點(diǎn)運(yùn)算,計(jì)算出來點(diǎn)的坐標(biāo)可能不是整數(shù),采用取整處理,即找最接近的點(diǎn),這樣會帶來一些誤差(圖象可能會出現(xiàn)鋸齒)。()的逆變換為 ()這樣,對于新圖中的每一點(diǎn),我們就可以根據(jù)公式()求出對應(yīng)原圖中的點(diǎn),得到它的灰度。 ()要注意的是,因?yàn)樾聢D變大,所以上面公式中出現(xiàn)了wold,hold,wnew,hnew,它們分別表示原圖(old)和新圖(new)的寬、高。它和以圖象左上角點(diǎn)為原點(diǎn)o’,向右為x’軸正方向,向下為y’軸正方向的坐標(biāo)系x’o’y’之間的轉(zhuǎn)換關(guān)系如何呢?。 旋轉(zhuǎn)示意圖 旋轉(zhuǎn)后的圖 旋轉(zhuǎn)后保持原圖大小,轉(zhuǎn)出的部分被裁掉 旋轉(zhuǎn)前:x0=rcosb;y0=rsinb旋轉(zhuǎn)a角度后:x1=rcos(ba)=rcosbcosa+rsinbsina=x0cosa+y0sina;y1=rsin(ba)=rsinbcosarcosbsina=x0sina+y0cosa; 以矩陣的形式表示: ()我們采用第一種做法,首先給出變換矩陣。} 旋轉(zhuǎn)旋轉(zhuǎn)(rotation)有一個(gè)繞著什么轉(zhuǎn)的問題,通常的做法是以圖象的中心為圓心旋轉(zhuǎn),舉個(gè)例子,(順時(shí)針方向):可以看出,旋轉(zhuǎn)后圖象變大了。GlobalUnlock(hImgData)。LocalUnlock(hTempImgData)。_lclose(hf)。bf,sizeof(BITMAPFILEHEADER))。//將平移后的圖象存成文件hf=_lcreat(c:\\,0)。if(hBitmap!=NULL)DeleteObject(hBitmap)。 memcpy(lpTempPtr,lpPtr,RectWidth)。lpTempPtr=(char*)lpTempImgData+(BufSizeLineBytes(i+DstY0)*LineBytes)+DstX0。//lpTempPtr指向要拷貝的那一行的最左邊的象素對應(yīng)在新圖中//的位置。特別要注意的是,偏移是//(BufSizeLineBytes(i+SrcY0)*LineBytes)+SrcX0,而不是//(i+SrcY0)*LineBytes)+SrcX0,你試著舉個(gè)例子就明白了。iRectHeight。amp。 //對應(yīng)DstY1在原圖中的y坐標(biāo)RectHeight=DstY1DstY0。SrcY0=DstY0yOffset。DstY1=。 //表示移動后,有圖區(qū)域的左上角點(diǎn)的y坐標(biāo)DstY1=+yOffset。 if( yOffset= )yVisible=FALSE。 //對應(yīng)DstX1在原圖中的x坐標(biāo)RectWidth=DstX1DstX0。SrcX0=DstX0xOffset。
點(diǎn)擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1