draw方法的问题喽,hdc那里有定义?
解决方案 »
- 在vs2008上编译通过了,可窗口就是显示不出来,不知道哪里出了问题
- DrawText 和 TextOut,怪异问题
- 基础小问题
- CWnd与HWnd区别
- 使用ATL向导向现有的MFC的MDI工程中添加COM接口,为什么很多MFC的函数不好用了?
- txt格式文件自动变为index.dat,人命关天
- 为什么我的下拉列表框拉不出来?急急
- 关于 在工作线程中使用DAO
- 本人用CDC::BitBlt实现的图象滚动(when KEYDWON),一顿一顿的,太慢了,在GDI下,如何优化 ?要求达到Acdsee的程度,理论,代码都可,若真正有帮助,另加300分
- 我今天发的一个帖子怎么不见了
- 新人求教,请大神们帮我看看,语言学得不好,
- 姿态模拟
CImage Mat2Image(Mat mat)
{
CImage ci;
//-----------Process---------------------
return ci;
}
void main()
{
Mat mat;
//--------------get Mat-------------------------
CDC* pDC=GetDlgItem(IDC_DISP0)->GetDC();
HDC hDC=pDC->GetSafeHdc();
CImage ci;
ci=Mat2Image(mat);
ci.draw(hdc,0,0);
}
{
Mat mat;
//--------------get Mat-------------------------
CImage ci;
ci=Mat2Image(mat);
ci.draw(hdc,0,0);
}
在main函数中进行判空操作,判断是否返回空指针,[/color]
函数的返回值其实发生了值得复制。
CImage Mat2Image(Mat mat)
{
CImage ci;
//-----------Process---------------------
return ci;
}外界从Mat2Image函数得到的CImage 对象已经不是ci了,而是ci的复制品。这个复制的过程是微软CImage自己做的,可能复制的不好。你真正想要的ci因为是局部变量,其实早就完蛋了。估计他的像素及内部的很多成员变量都没复制走。所以建议你此处返回指针:CImage* Mat2Image(Mat mat)
{
CImage *ci = new CImage;
//-----------Process---------------------
return ci;
}或者用引用来做:void Mat2Image(Mat mat,CImage &ci)
{ //-----------Process---------------------}