我通过一些计算,得到了一个矩阵,目前这个数组是short类型的,也可以改成WORD等等。现在需要把这个矩阵在屏幕上显示为一个灰度位图。比如说一个16个元素的数组array={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}(当然我的数组不止这么大了),我的想法是在view中显示一个4×4的灰度位图,第一个象素的灰度为1,第二个象素的灰度为2,依次类推。请问有办法实现吗?我想尝试调用CreateBitmap()函数,但一直不能成功。如果用其它的函数也行。
请大侠指点!请您贴出较详细的代码,谢谢!
另外,我在“图形处理/算法 ”版和本版都发了题为《【急】请问如何用CreateBitmap()创建一个位图(100分!!)》的帖子,请回答我的问题的大侠去回一下那两篇帖子,这样我好加分给您,好吗!
请大侠指点!请您贴出较详细的代码,谢谢!
另外,我在“图形处理/算法 ”版和本版都发了题为《【急】请问如何用CreateBitmap()创建一个位图(100分!!)》的帖子,请回答我的问题的大侠去回一下那两篇帖子,这样我好加分给您,好吗!
给你位图显示!!BOOL CDIPDibDoc::OnOpenDocument(LPCTSTR lpszPathName)
{
if (!CDocument::OnOpenDocument(lpszPathName))
return FALSE;
// TODO: Add your specialized creation code here
if( m_pDib )
delete [] m_pDib; m_pDib=new CDib(lpszPathName);
if(m_pDib->IsValid())
{
SetTitle(lpszPathName);
long TotalPixels = m_pDib->GetWidth()*m_pDib->GetHeight();
}
else
DeleteContents();
SetModifiedFlag(FALSE);
UpdateAllViews(0); return TRUE;
}CDIPDibDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if(pDib)
{
BeginWaitCursor(); lpDIBBits = pDib->GetDibData();
lHeight = pDib->GetHeight();
lWidth = pDib->GetWidth();
lLinebits = WIDTHBYTES( 8*lWidth );
SetScrollSizes(MM_TEXT, CSize(lWidth, lHeight));
pDib->Draw(pDC->m_hDC, 0, 0, lWidth, lHeight,
0, 0, lWidth, lHeight, DIB_RGB_COLORS, SRCCOPY);
EndWaitCursor();
}
显示完毕!
4×4的图!
那么lWidth ,lHeight 都是4,重新申请内存!!之后!
lWidth = 4;
lHeight = 4;
delete [] lpDIBBits;
lpDIBBits = new BYTE [lHeight*lWidth];
for( i=0;i<lHeight*lWidth;i++ )
{
*(lpDIBBits+i) = i;
}这是具体的算法!!如果你还不明白,
给我发邮件[email protected]
只有r=g=b = 数组中的值才是灰度的吧!!