急急急!关于位图顺时针旋转90度的问题。 一个biBitCount=24 的位图。我设置了两个char 指针,分别用来存放旋转前位图的数据,和旋转后位图的数据。如何在for语句里,使旋转后buffer里面的数据等于相对应的旋转前的buffer里面的数据啊。小弟在此先谢谢各位大侠啦! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 有一点LZ需要注意,图像选中后往往大小会发生变化,确切地说,会变大!所以,如果旋转的度数不是90的整数倍,LZ所提的问题本身就是有问题的。旋转后的图像大小都变化了,还怎么和原来的图像数据相提并论?不过,如果LZ所说的旋转肯定是90度的话,问题就简单了。先选装,转完之后把新的图像数据中的像素点一个一个地拷贝回去,冲掉原来的像素值。或者,更干脆,把原来的指向图像像素buffer的指针直接指向新的图像像素buffer,在delete掉原来的图像像素buffer。上述内容在细节上可能需要仔细推敲,思路应该是对的。 就使旋转90度,我使下面这样做的,就有问题,不知道怎么该,大哥指教一下bmiHeader.biWidth 旋转前的宽bmiHeader.biHeight 旋转前的高oldSizePerLineData 旋转前一行字节数newSizePerLineData 旋转后一行字节数 for(int x = 0; x < bmiHeader.biWidth; x++) { for(int y = 0; y < bmiHeader.biHeight; y++) { DestBuffer[(BYTE)(3 * (bmiHeader.biWidth - y)) + x * newSizePerLineData] = SrcBuffer[(BYTE)(3 * x) + y * oldSizePerLineData]; } }因为使24位位图,所以上面有成3,让后将像素转换成字节。一个字节一个字节的拷,不知道小弟这样写的错误是什么,希望大侠指教!谢谢先! for(int y = 0; y < bmiHeader.biHeight; y++) { for(int x = 0; x < bmiHeader.biWidth; x++) { DestBuffer[(3 * (bmiHeader.biWidth - y)) + x * newPerLineData] = SrcBuffer[(3 * x) + y * oldPerLineData]; } }这样子改怎么还不对啊!! 出来的结果是什么样的?BMP的话要注意,每行必须是能被4整除的。 SetScrollInfo()不正常工作 求教育 c++中list变量如何申明啊? 恳请大老们帮忙,读写ini文件? BHO获取URL问题 请问我用ATL做一个服务,该服务怎么和其他程序通信???? 请教VS6.0安装错误!急啊。 可不可以这样做? 图片读取显示问题(在线等待) 哪位大虾帮我看看这条语句,哪儿错了(在线) 求问MTS的问题,专家请 vc下如何使用水晶报表 窗体大小可变后,用StretchBlt显示图像,怎么显示的不完整?
bmiHeader.biWidth 旋转前的宽
bmiHeader.biHeight 旋转前的高
oldSizePerLineData 旋转前一行字节数
newSizePerLineData 旋转后一行字节数
for(int x = 0; x < bmiHeader.biWidth; x++)
{
for(int y = 0; y < bmiHeader.biHeight; y++)
{
DestBuffer[(BYTE)(3 * (bmiHeader.biWidth - y)) + x * newSizePerLineData]
= SrcBuffer[(BYTE)(3 * x) + y * oldSizePerLineData];
}
}因为使24位位图,所以上面有成3,让后将像素转换成字节。一个字节一个字节的拷,不知道小弟这样写的错误是什么,希望大侠指教!谢谢先!
{
for(int x = 0; x < bmiHeader.biWidth; x++)
{
DestBuffer[(3 * (bmiHeader.biWidth - y)) + x * newPerLineData]
= SrcBuffer[(3 * x) + y * oldPerLineData];
}
}这样子改怎么还不对啊!!
BMP的话要注意,每行必须是能被4整除的。