ビットマップ イメージが読み込まれた SDI mfc アプリケーションがあり、そのビットマップを 90 度、180 度、および 270 度に回転させたいと考えています。180度回転できます。しかし、90度と270度で立ち往生しています。これがコードです。
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();
}
}
他に使える方法があれば教えてください。前もって感謝します