一个函数,比较两幅大小相同的图像中的每个点,然后返回一个比较后的图像
CImage CmpImage(CImage image1,CImage image2)
{
int nWidth=image1.GetWidth();
int nHeight=image1.GetHeight();
CImage image;
image.Create(nWidth,nHeight,image1.GetBPP());
for(int h=0;h!=nHeight;++h)
{
for(int w=0;w!=nWidth;++w)
image.SetPixel(w,h,image1.GetPixel(w,h)==image2.GetPixel(w,h)?RGB(0,0,0):RGB(255,255,255));
}
return image;
}就在设置点颜色那句断言失败,跳到这个函数中inline void CImage::ReleaseDC() const throw()
{
HBITMAP hBitmap; ATLASSUME( m_hDC != NULL ); m_nDCRefCount--;
if( m_nDCRefCount == 0 )
{
hBitmap = HBITMAP( ::SelectObject( m_hDC, m_hOldBitmap ) );
ATLASSERT( hBitmap == m_hBitmap );//失败
s_cache.ReleaseDC( m_hDC );
m_hDC = NULL;
}
}为什么
CImage CmpImage(CImage image1,CImage image2)
{
int nWidth=image1.GetWidth();
int nHeight=image1.GetHeight();
CImage image;
image.Create(nWidth,nHeight,image1.GetBPP());
for(int h=0;h!=nHeight;++h)
{
for(int w=0;w!=nWidth;++w)
image.SetPixel(w,h,image1.GetPixel(w,h)==image2.GetPixel(w,h)?RGB(0,0,0):RGB(255,255,255));
}
return image;
}就在设置点颜色那句断言失败,跳到这个函数中inline void CImage::ReleaseDC() const throw()
{
HBITMAP hBitmap; ATLASSUME( m_hDC != NULL ); m_nDCRefCount--;
if( m_nDCRefCount == 0 )
{
hBitmap = HBITMAP( ::SelectObject( m_hDC, m_hOldBitmap ) );
ATLASSERT( hBitmap == m_hBitmap );//失败
s_cache.ReleaseDC( m_hDC );
m_hDC = NULL;
}
}为什么
解决方案 »
- 程序阻塞问题
- ping 命令扩展使用,增加可以写定源IP地址 请TX不啬赐教,在线等 thx
- VC++怎么生成应用程序?单独一个EXE不需要带其他文件,我初学者
- 一个桌面透明月历显示问题!
- 想问一下
- 调用外部DLL的API,报错Access Violation
- 我终于明白了网络实名实现原理,还发现了比3721还要坏的东西,它就是BaiDu 的IE搜索伴侣
- 请问:如何使用Win32 SDK同MFC混合编程??
- 问这么一个问题!
- 如何设置动态创建的CButton背景颜色和字体颜色?
- C++进行http登录后,保持session再发贴。[220分]
- 请教一下:基于mfc的对话框程序里,用了一个树形控件CTreeCtrl,能否对每个结点设置属性:比如有的结点只允许修改名称,有的结点修改后弹出对话框来修改参数
修改如下:
void CmpImage(CImage image1,CImage image2.CImage &outImage)
{
int nWidth=image1.GetWidth();
int nHeight=image1.GetHeight();
outImage.Create(nWidth,nHeight,image1.GetBPP());
for(int h=0;h!=nHeight;++h)
{
for(int w=0;w!=nWidth;++w)
outImage.SetPixel(w,h,image1.GetPixel(w,h)==image2.GetPixel(w,h)?RGB(0,0,0):RGB(255,255,255));
}
}