0
我有一個SDI mfc應用程序,其中加載了一個位圖圖像,我想旋轉該位圖90Deg,180Deg & 270Deg。 能夠旋轉180度。但我堅持在90度和270度。 這是代碼。在MFC中旋轉位圖90deg,270deg
void CBmpView::OnRotate180()
{
BYTE ptempBit ;
CBmpViewerDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
int nLenght = (pDoc->dwBitsSize);
if(pBitsView != NULL){
DeleteObject(pBitsView);
}
if(pDoc->m_bRotationFlag == FALSE){
pDoc->m_bmpHandle = CreateDIBSection(NULL, pDoc->m_bitmapinfo,DIB_RGB_COLORS,
(void **)&pBitsView, NULL, 0);
CopyMemory(pBitsView,pDoc->m_pBits,pDoc->dwBitsSize);
for(int i=0; i < ((nLenght-1)) ; i++){
ptempBit = pBitsView[i];
pBitsView[i] = pBitsView[nLenght - 1];
pBitsView[nLenght - 1] = ptempBit;
nLenght --;
}
pDoc->m_bRotationFlag = TRUE;
Invalidate();
}else if(pDoc->m_bRotationFlag == TRUE){
pDoc->m_bmpHandle = CreateDIBSection(NULL, pDoc->m_bitmapinfo,DIB_RGB_COLORS,
(void **)&pBitsView, NULL, 0);
CopyMemory(pBitsView,pDoc->m_pBits,pDoc->dwBitsSize);
pDoc->m_bRotationFlag = FALSE;
Invalidate();
}
}
請告訴我,如果可以使用任何其他方法。 在此先感謝
正如你可以在像素數據是1個維陣列代碼中看到。所以我不能實現你提出的代碼。你能否建議其他解決方案? – xMayank
問題在哪裏? grif [iRow] [iCol]轉換爲gridOnArray [iRow * iMaxCols + Icol]!這是簡單的數學。 – xMRi
感謝xMRi但是,對於grif [iRow] [iCol]轉換爲gridOnArray [iRow * iMaxCols + icol],但是'newGrid [iCol] [iMaxRow-iRow-1]'或'newGrid [iMaxRow-iRow-1 ] [iMaxCols-iCol-1]''newGrid [iMaxCols-iCol-1] [iRow]'它會轉化爲什麼? – xMayank