CImage图像旋转问题

voidCMyView::ImageRotation(CImage*Imgn,CImage*Imgm,doublealpha){structIMAGEPARAMENTP;... void CMyView::ImageRotation(CImage *Imgn, CImage *Imgm, double alpha)
{
struct IMAGEPARAMENT P;
RGBQUAD ColorTab[256];
int i, j, ww, Xd, Yd, Dx, Dy,nSize;
double centerx, centery, sintheta, costheta;
double X1, Y1, X2, Y2, theta, xx, yy, rr;
BYTE **list, *sc;
int x1, y1, x2, y2, flag;
double p, q, a, b, c, d, t1, t2, t3;
if (ImageType(Imgm) == 2)
{
flag = 1; //flag为标志位,当取值为1时,表示双线性内插法
}
else
{
flag = 0; //0表示最近邻点法
}
。。。。。
}

以上函数中if (ImageType(Imgm) == 2)这句话一直编译不通过
提示 error C2440: “<function-style-cast>”: 无法从“ATL::CImage *”转换为“Gdiplus::ImageType”
本人用 VS2008 SP1 编译的
请各位高手帮帮忙 给个方法解决这个错误 小弟感激不尽
展开
 我来答
匿名用户
2012-09-29
展开全部
哪有那么复杂,只要用CImage的PlgBlt方法就可以解决90度,180度和反转的问题。
例:

CImage* m_pCurrentFrame;
CPoint m_DisplayPoints[3]; // 放着旋转后的四边形的3个顶点 如果逆时针旋转90度
// m_DisplayPoints[0] 右上角,m_DisplayPoints[1] 左上角
// m_DisplayPoints[3] 右下角

int width,height; // 源图的宽和高

m_pCurrentFrame->PlgBlt(dc,m_DisplayPoints,0,0,width,height); // m_pCurrentFrame 转90度
bhtzu
2012-07-20 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4262万
展开全部
ImageType是自定义函数么,将这个函数的声明和实现贴上来。
追问
ImageType是GDI+里的枚举类型
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kiven0909
2012-07-20
知道答主
回答量:65
采纳率:0%
帮助的人:15.9万
展开全部
不会啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
倾听风述
2012-07-20 · TA获得超过377个赞
知道小有建树答主
回答量:562
采纳率:0%
帮助的人:377万
展开全部
if(lmgn->GetType()== 2)

这样去判定
追问
改用if(lmgn->GetType()== 2)后 还是不通过
提示 error C2039: “GetType”: 不是“ATL::CImage”的成员
追答
哦 你是用的ATl 我用GDIplus 不过你用ImageType显然不行的,因为ImageType是一个枚举。
你goto到CImage的定义里面,去看看用什么函数得到Type的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-07-20
展开全部
不能这样用,你把gdi+和CImage的东西搞混了
更多追问追答
追问
可是这段代码是从网上找的啊 而且有人用过 是可以用的
这段代码的作用就是实现 CImage 的图像旋转功能 还请高手指点迷津 小弟多谢
追答
这是个自定义函数
int ImageType(CImage *PImgm){
RGBQUAD ColorTab[256];
int k;
if(PImgm->IsNull())
return 0;
switch(PImgm->GetBPP()){
case 1: k=0;break;
case 4:k=1;break;
case 8:k=3;break;
default:k=4;break;
}
if(k==3){
PImgm->GetColorTable(0,256,ColorTab);
k=PaletteType(ColorTab);
}
return k;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式