高手请进:如何在MFC中实现图像的旋转? 现在正在做一个位图的旋转问题,不知道如何实现他绕定点旋转!希望高手指教 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 if (hDIB != NULL)//HDIB nDIB存放BMP内存{ LPSTR lpDIB = (LPSTR) ::GlobalLock((HGLOBAL) hDIB); // 获取DIB宽度 int cxDIB = (int) ::DIBWidth(lpDIB); // 获取DIB高度 int cyDIB = (int) ::DIBHeight(lpDIB);//256色 BYTE* pBmp = new BYTE[cxDIB]; for (int j=0; j<cxDIB; j++) { for( int i = 0; i<cyDIB/2; i++ ) { pBmp[j]=lpDIB[i*cxDIB+j]; lpDIB[i*cxDIB+j]=lpDIB[(cyDIB-i-1)*cxDIB+j]; lpDIB[(cyDIB-i-1)*cxDIB+j]=pBmp[j]; } }}DWORD WINAPI DIBWidth(LPSTR lpDIB){ // 指向BITMAPINFO结构的指针(Win3.0) LPBITMAPINFOHEADER lpbmi; // 指向BITMAPCOREINFO结构的指针 LPBITMAPCOREHEADER lpbmc; // 获取指针 lpbmi = (LPBITMAPINFOHEADER)lpDIB; lpbmc = (LPBITMAPCOREHEADER)lpDIB; // 返回DIB中图像的宽度 if (IS_WIN30_DIB(lpDIB)) { // 对于Windows 3.0 DIB,返回lpbmi->biWidth return lpbmi->biWidth; } else { // 对于其它格式的DIB,返回lpbmc->bcWidth return (DWORD)lpbmc->bcWidth; }}/************************************************************************* * * 函数名称: * DIBHeight() * * 参数: * LPSTR lpDIB - 指向DIB对象的指针 * * 返回值: * DWORD - DIB中图像的高度 * * 说明: * 该函数返回DIB中图像的高度。对于Windows 3.0 DIB,返回BITMAPINFOHEADER * 中的biHeight值;对于其它返回BITMAPCOREHEADER中的bcHeight值。 * ************************************************************************/DWORD WINAPI DIBHeight(LPSTR lpDIB){ // 指向BITMAPINFO结构的指针(Win3.0) LPBITMAPINFOHEADER lpbmi; // 指向BITMAPCOREINFO结构的指针 LPBITMAPCOREHEADER lpbmc; // 获取指针 lpbmi = (LPBITMAPINFOHEADER)lpDIB; lpbmc = (LPBITMAPCOREHEADER)lpDIB; // 返回DIB中图像的宽度 if (IS_WIN30_DIB(lpDIB)) { // 对于Windows 3.0 DIB,返回lpbmi->biHeight return lpbmi->biHeight; } else { // 对于其它格式的DIB,返回lpbmc->bcHeight return (DWORD)lpbmc->bcHeight; }} 我又例子,给我你的mail,我给你代码 求学习资源啊 按钮的XY坐标值与资源视图右下角显示的坐标值不一致是怎么回事呢? 如何在VC中编辑PDF文件后在保存成PDF文件 线程删除出错? 关于麻将听牌算法应该怎么写呀 急问各位一个安装问题 关于WM_NOTIFY消息,请教! VC中SetDlgItemText如何将一个数组的内容全部显示出来 求高手指导!! 关于网络方面的问题 CDocument与CEditView的问题(在线等待,谢谢) 我要测试prog id 为 Msxml2.XMLHTML 的组件,谁能够给一个网页支持XML的让我测试
{ LPSTR lpDIB = (LPSTR) ::GlobalLock((HGLOBAL) hDIB);
// 获取DIB宽度
int cxDIB = (int) ::DIBWidth(lpDIB);
// 获取DIB高度
int cyDIB = (int) ::DIBHeight(lpDIB);
//256色
BYTE* pBmp = new BYTE[cxDIB];
for (int j=0; j<cxDIB; j++)
{
for( int i = 0; i<cyDIB/2; i++ )
{
pBmp[j]=lpDIB[i*cxDIB+j];
lpDIB[i*cxDIB+j]=lpDIB[(cyDIB-i-1)*cxDIB+j];
lpDIB[(cyDIB-i-1)*cxDIB+j]=pBmp[j];
}
}}
DWORD WINAPI DIBWidth(LPSTR lpDIB)
{
// 指向BITMAPINFO结构的指针(Win3.0)
LPBITMAPINFOHEADER lpbmi;
// 指向BITMAPCOREINFO结构的指针
LPBITMAPCOREHEADER lpbmc; // 获取指针
lpbmi = (LPBITMAPINFOHEADER)lpDIB;
lpbmc = (LPBITMAPCOREHEADER)lpDIB; // 返回DIB中图像的宽度
if (IS_WIN30_DIB(lpDIB))
{
// 对于Windows 3.0 DIB,返回lpbmi->biWidth
return lpbmi->biWidth;
}
else
{
// 对于其它格式的DIB,返回lpbmc->bcWidth
return (DWORD)lpbmc->bcWidth;
}
}
/*************************************************************************
*
* 函数名称:
* DIBHeight()
*
* 参数:
* LPSTR lpDIB - 指向DIB对象的指针
*
* 返回值:
* DWORD - DIB中图像的高度
*
* 说明:
* 该函数返回DIB中图像的高度。对于Windows 3.0 DIB,返回BITMAPINFOHEADER
* 中的biHeight值;对于其它返回BITMAPCOREHEADER中的bcHeight值。
*
************************************************************************/
DWORD WINAPI DIBHeight(LPSTR lpDIB)
{
// 指向BITMAPINFO结构的指针(Win3.0)
LPBITMAPINFOHEADER lpbmi;
// 指向BITMAPCOREINFO结构的指针
LPBITMAPCOREHEADER lpbmc; // 获取指针
lpbmi = (LPBITMAPINFOHEADER)lpDIB;
lpbmc = (LPBITMAPCOREHEADER)lpDIB; // 返回DIB中图像的宽度
if (IS_WIN30_DIB(lpDIB))
{
// 对于Windows 3.0 DIB,返回lpbmi->biHeight
return lpbmi->biHeight;
}
else
{
// 对于其它格式的DIB,返回lpbmc->bcHeight
return (DWORD)lpbmc->bcHeight;
}
}