放大问题,大家帮我看看,谢谢拉! 我学习一些图象方面的知识,不知为什么,图象放大后总是黑色,无法显示别的颜色啊!我将源代码附上,设置的是白色,但显示的总是黑色,大家请帮忙! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 源代码如下://更改光标形状 BeginWaitCursor(); CImageProcessingDoc * pDoc = (CImageProcessingDoc *)this->GetDocument(); CDib * pDib = pDoc->m_pDibInit; LPBITMAPINFOHEADER lpBMIH=pDib->m_lpBMIH; // 判断是否是8-bpp位图 if (lpBMIH->biBitCount != 8) { // 提示用户 MessageBox("目前只支持256色位图的图象分割!", "系统提示" , MB_ICONINFORMATION | MB_OK); // 返回 return; } // 创建新DIB(此函数创建一个新的CDIB,只是没有分配图象数据的内存和数据) CDib * pDibDst = new CDib(CSize(2*pDib->m_lpBMIH->biWidth, 2*pDib->m_lpBMIH->biHeight),8); // 分配图象数据内存,并拷贝图象数据 pDibDst->m_lpImage = (LPBYTE) new char[pDibDst->m_dwSizeImage]; CSize sizeImage = pDibDst->GetDimensions(); int nWidth= sizeImage.cx ; int nHeight= sizeImage.cy ; LPBYTE lpImage = pDibDst->m_lpImage; // 图像在计算机在存储中的实际大小 CSize sizeImageSave= pDibDst->GetDibSaveDim(); // 图像在内存中每一行象素占用的实际空间 int nSaveWidth = sizeImageSave.cx; for(int y=0; y<nHeight ; y++ ) for(int x=0 ; x<nWidth ; x++ ) { *(lpImage+y*nSaveWidth+x)=255;} // 判断缩放是否成功 if (!pDibDst->IsEmpty()) { // 替换DIB,同时释放旧DIB对象 pDoc->m_pDibInit=pDibDst // 设置脏标记 pDoc->SetModifiedFlag(TRUE); // 更新视图 pDoc->UpdateAllViews(NULL);} else { // 提示用户 MessageBox("失败!", "系统提示" , MB_ICONINFORMATION | MB_OK);} // 恢复光标 EndWaitCursor(); 数字图像编程那本书上的吗?建议你用gdi+,容易多了,可来信[email protected] 代码没问题,可能是你的视图类的问题,再不然打开DEBUG看看目标图象像素到底变化了没有? c++自定义类如何接收消息映射 VC中HotKey Control怎样设置ctr(alt)+shift+小键盘上数字键 深圳的c++实习生平均工资大概是多少? VC ADO 调用SQL语句。 我想在“用activex向导生成的ocx”中增加一个返回BSTR的事件,怎么修改代码呢!? ---请大家帮忙: 有关条形码图像识别--- 怎么让一个无模式对话框一直停留在它父窗口的顶层? 请问怎样在程序中杀死创建的线程? 有关三是图的问题??? 请问各位什么是变参函数? 高分求游戏大厅开发思路,有好建议者加送200分,绝不食言!! YUY2倒底是什么格式??什么地方有说明哦???
//更改光标形状
BeginWaitCursor();
CImageProcessingDoc * pDoc = (CImageProcessingDoc *)this->GetDocument();
CDib * pDib = pDoc->m_pDibInit;
LPBITMAPINFOHEADER lpBMIH=pDib->m_lpBMIH;
// 判断是否是8-bpp位图
if (lpBMIH->biBitCount != 8)
{
// 提示用户
MessageBox("目前只支持256色位图的图象分割!", "系统提示" ,
MB_ICONINFORMATION | MB_OK);
// 返回
return;
}
// 创建新DIB(此函数创建一个新的CDIB,只是没有分配图象数据的内存和数据)
CDib * pDibDst = new CDib(CSize(2*pDib->m_lpBMIH->biWidth,
2*pDib->m_lpBMIH->biHeight),8);
// 分配图象数据内存,并拷贝图象数据
pDibDst->m_lpImage = (LPBYTE) new char[pDibDst->m_dwSizeImage];
CSize sizeImage = pDibDst->GetDimensions();
int nWidth= sizeImage.cx ;
int nHeight= sizeImage.cy ;
LPBYTE lpImage = pDibDst->m_lpImage;
// 图像在计算机在存储中的实际大小
CSize sizeImageSave= pDibDst->GetDibSaveDim();
// 图像在内存中每一行象素占用的实际空间
int nSaveWidth = sizeImageSave.cx;
for(int y=0; y<nHeight ; y++ )
for(int x=0 ; x<nWidth ; x++ )
{ *(lpImage+y*nSaveWidth+x)=255;}
// 判断缩放是否成功
if (!pDibDst->IsEmpty())
{
// 替换DIB,同时释放旧DIB对象
pDoc->m_pDibInit=pDibDst
// 设置脏标记
pDoc->SetModifiedFlag(TRUE);
// 更新视图
pDoc->UpdateAllViews(NULL);}
else
{
// 提示用户
MessageBox("失败!", "系统提示" , MB_ICONINFORMATION | MB_OK);}
// 恢复光标
EndWaitCursor();