更改图像数据后显示不出效果

ffighter 2009-04-20 02:21:38
代码如下:

void CProjectDVView::OnBW()
{
BeginWaitCursor();

CProjectDVDoc * pDoc = GetDocument();
int nWidth = pDoc->m_pDib->GetWidth();
int nHeight = pDoc->m_pDib->GetHeight();

// 循环控制变量
int y;
int x;

LPBYTE m_lpImage = pDoc->m_pDib->GetBitsPtr();

for(y=0; y<nHeight; y++)
{
for(x=0; x<nWidth; x++)
{
m_lpImage[y*nWidth+x]=(unsigned char)(255-m_lpImage[y*nWidth+x]);
}
}

delete []pUnchImage;
pUnchImage = NULL ;

EndWaitCursor();
pDoc->SetModifiedFlag(TRUE);
pDoc->UpdateAllViews(NULL);
}

想实现灰度图像类似底片效果,但是运行后没有任何效果= =b

求助
...全文
114 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lucklizhan 2009-04-23
  • 打赏
  • 举报
回复
是不是调用了两次
又返回去了 ?
ffighter 2009-04-22
  • 打赏
  • 举报
回复
函数调用肯定没问题,那句话是改变像素灰度值,就是原来黑的改成白的或者反过来,不知道为什么就是显示不出结果,大家再帮忙看看
ffighter 2009-04-21
  • 打赏
  • 举报
回复
为啥没人看啊?自己顶下..........
fire_woods 2009-04-21
  • 打赏
  • 举报
回复
pDoc->UpdateAllViews(NULL);
这个会刷新的.
lambochan 2009-04-21
  • 打赏
  • 举报
回复
有没刷新界面啊..
例如:Invalidate()
xtjqu 2009-04-21
  • 打赏
  • 举报
回复
是啊,调两次就回来了
fire_woods 2009-04-21
  • 打赏
  • 举报
回复
OnBW()
这个函数确实被调用了?
而且只调用了一次?
zxx_0405 2009-04-21
  • 打赏
  • 举报
回复
不太懂vc,但是看你的程序好像并没有改变图像的像素啊

m_lpImage[y*nWidth+x]=(unsigned char)(255-m_lpImage[y*nWidth+x]);
这个貌似只是一个循环,没把图像数据改掉

还是看高手的吧,不是很了解,以上纯属个人愚见

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧