
如何将内存数据放到BITMAP结构中再用BitBlt显示? 20
先申请了一块内存DWORD*buffer;buffer=newDWORD[winWidth*winHeight];然后再里面写数据,然后本来是用SetPixel的方法的:...
先申请了一块内存
DWORD *buffer;
buffer = new DWORD[winWidth*winHeight];
然后再里面写数据,然后本来是用SetPixel的方法的:
for ( int y = 1; y < winHeight; y++ )
{
for ( int x = 1; x < winWidth; x++ )
{
DWORD color = buffer[x + y * winWidth];
if ( color )
SetPixel ( hdc, x, y, color );
}
}
但是SetPixel巨慢!!!
于是想将内存放到BITMAP::bmBits中,然后再用BitBlt显示,但不知道代码怎么写
如果有更好的方法请介绍并放出代码,但因为某些原因,请不要用DirectX!
听说有种是用GDI+的方法SetDibits请介绍下,谢谢。
时间不是很紧,可以慢慢写,好的话一定追加!!!
明知道答非所问就不要答啦!
不是问怎样载入和显示位图啊,是显示内存里的图形数据啊! 展开
DWORD *buffer;
buffer = new DWORD[winWidth*winHeight];
然后再里面写数据,然后本来是用SetPixel的方法的:
for ( int y = 1; y < winHeight; y++ )
{
for ( int x = 1; x < winWidth; x++ )
{
DWORD color = buffer[x + y * winWidth];
if ( color )
SetPixel ( hdc, x, y, color );
}
}
但是SetPixel巨慢!!!
于是想将内存放到BITMAP::bmBits中,然后再用BitBlt显示,但不知道代码怎么写
如果有更好的方法请介绍并放出代码,但因为某些原因,请不要用DirectX!
听说有种是用GDI+的方法SetDibits请介绍下,谢谢。
时间不是很紧,可以慢慢写,好的话一定追加!!!
明知道答非所问就不要答啦!
不是问怎样载入和显示位图啊,是显示内存里的图形数据啊! 展开
1个回答
展开全部
int CRadView::LoadBitmapFile(UINT nID, int x, int y)
{
CDC* pDC = GetDC();
CBitmap m_Back;
CDC MemDC;
BITMAP bit;
m_Back.LoadBitmap(nID);
m_Back.GetBitmap(&bit);
MemDC.CreateCompatibleDC(pDC);
MemDC.SelectObject(m_Back);
pDC->BitBlt(x, y, bit.bmWidth, bit.bmHeight, &MemDC, 0, 0, SRCCOPY);
ReleaseDC(pDC);
return 1;
}
void CRadView::OnDraw(CDC* pDC)
{
CRadDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
LoadBitmapFile(IDB_BACK, 300, 50);
}
{
CDC* pDC = GetDC();
CBitmap m_Back;
CDC MemDC;
BITMAP bit;
m_Back.LoadBitmap(nID);
m_Back.GetBitmap(&bit);
MemDC.CreateCompatibleDC(pDC);
MemDC.SelectObject(m_Back);
pDC->BitBlt(x, y, bit.bmWidth, bit.bmHeight, &MemDC, 0, 0, SRCCOPY);
ReleaseDC(pDC);
return 1;
}
void CRadView::OnDraw(CDC* pDC)
{
CRadDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
LoadBitmapFile(IDB_BACK, 300, 50);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询