这是一段代码,不过需要修改一下,不将位图对象做为局部变量
void CCsdn_sdiView::OnDraw(CDC* pDC)
{
CCsdn_sdiDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc); DWORD time1=GetTickCount();
//*写内存DC,此段代码与直接写DC取其一
CDC memDC;
CRect rc;
GetClientRect( &rc );
memDC.CreateCompatibleDC( pDC );
CBitmap m_ClientBmp;
m_ClientBmp.CreateCompatibleBitmap( pDC, rc.Width(), rc.Height() );
CBitmap *pOldBmp = memDC.SelectObject( &m_ClientBmp ); //在内存DC上处理
memDC.PatBlt( 0, 0, rc.Width(), rc.Height(), PATCOPY );
//可以在此处添加向内存窗口上画矢量线的代码
for(int x=0;x<rc.Width();x++)
for( int y=0;y<rc.Height();y++)
{
memDC.SetPixelV( x, y, RGB( rand()%256, rand()%256, rand()%256 ) );
}
//复制内存DC上已做好内容到屏幕上
pDC->BitBlt( 0, 0, rc.Width(), rc.Height(),
&memDC, 0, 0, SRCCOPY ); memDC.SelectObject( pOldBmp );
void CCsdn_sdiView::OnDraw(CDC* pDC)
{
CCsdn_sdiDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc); DWORD time1=GetTickCount();
//*写内存DC,此段代码与直接写DC取其一
CDC memDC;
CRect rc;
GetClientRect( &rc );
memDC.CreateCompatibleDC( pDC );
CBitmap m_ClientBmp;
m_ClientBmp.CreateCompatibleBitmap( pDC, rc.Width(), rc.Height() );
CBitmap *pOldBmp = memDC.SelectObject( &m_ClientBmp ); //在内存DC上处理
memDC.PatBlt( 0, 0, rc.Width(), rc.Height(), PATCOPY );
//可以在此处添加向内存窗口上画矢量线的代码
for(int x=0;x<rc.Width();x++)
for( int y=0;y<rc.Height();y++)
{
memDC.SetPixelV( x, y, RGB( rand()%256, rand()%256, rand()%256 ) );
}
//复制内存DC上已做好内容到屏幕上
pDC->BitBlt( 0, 0, rc.Width(), rc.Height(),
&memDC, 0, 0, SRCCOPY ); memDC.SelectObject( pOldBmp );
解决方案 »
- 祝各位程序员中秋快乐!
- 请教:vc从尾部向上按字节读取文件,结果遇到中文就乱码,怎么解决?
- 如何用Ogre画一个正方体?
- 关于WINDOWS程序设计(第2版)中的几个问题
- 如何自动重新连接数据库,ODBC的
- 我用SetWindowsHookEx为一个进程安装钩子为什么为失败?(解决马上给分)
- 关于编译与连接。。它们有什么不一样。。
- 我是C语言初学者,麻烦你们帮我看看这段程序哪儿有错误!!!谢谢!!!
- 请高手们说说VC能用那些C语言的标准库函数?谢谢!
- 使用winpcap捕获IRC包,过滤器如何设置?
- 我在一个SDK的例子上看到"#pragma comment(lib,"comctl32.lib")"语句,哪们高手能给我详细解释一下????
- 服务器和客户机
还要说什么吗
在OnDraw中可以取到当前的Doc类,然后根绝Doc类的东西画图。