MFC中关于图像旋转的问题 15

我想通过像素点到像素点复制的方法实现图像逆时针旋转90度的功能。我的思路是这样的:通过对新图像每行每列的操作——指针指向新图像上某行某列的一个像素点,然后寻找这一像素点在... 我想通过像素点到像素点复制的方法实现图像逆时针旋转90度的功能。我的思路是这样的:通过对新图像每行每列的操作——指针指向新图像上某行某列的一个像素点,然后寻找这一像素点在源图像上该对应像素点的坐标,用一指针指向源图像上该点,将该点内容赋给新图像上的点,循环实现所有点的操作,最后实现旋转。部分代码如下:// 针对新图像每行进行操作for(i = 0; i < lNewHeight; i++){ //针对新图像每列进行操作 for(j = 0; j < lNewWidth; j++) { // 指向新DIB第i行,第j个象素的指针 // 注意此处宽度和高度是新DIB的宽度和高度 lpDst = (char *)lpNewDIBBits + lNewLineBytes *i + j; //lpNewDIBBits是指向数据段起始地址的指针,lNewLineBytes是每行的字节数 // 计算该象素在源DIB中的坐标(由于是逆时针旋转90度,新图像的高是源图像的宽,新图像的宽是源图像的高,我直接计算了对应坐标的公式) i0 =j ; j0 = lWidth - 1 -i ; // 判断是否在源图范围内 if( (j0 >= 0) && (j0 < lWidth) && (i0 >= 0)&& (i0 < lHeight)) { // 指向源DIB第i0行,第j0个象素的指针 lpSrc = (char *)lpDIBBits + lLineBytes * i0 + j0; // 复制象素 *lpDst = *lpSrc; }然而最终显示的图像是一张乱七八糟的图。我认为可能是计算新图像坐标与源图像对应坐标的公式出了问题,但是我自己想不出来是什么原因出错,因为我用了很多像素点来试觉得可以。我水平有限,特来请教各位高手,多谢多谢。 展开
 我来答
任明星Ming
2013-08-12 · TA获得超过798个赞
知道小有建树答主
回答量:1061
采纳率:100%
帮助的人:1144万
展开全部
你好,请参考我的博客,里面有个时钟程序,就是用到了360°旋转画法,用来画时钟的:时针、分针和秒针。建议采用PNG图像,而不是BMP图像。这样图像比较小,也支持alpha变换。
有不明白的,请再追问。
http://blog.csdn.net/renstarone/article/details/9089835
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
nicklisir
2013-08-10 · 超过30用户采纳过TA的回答
知道答主
回答量:120
采纳率:0%
帮助的人:66.7万
展开全部
你应该考虑1个像素占用32位,24,还是8位也就是RGB的组成
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式