大家帮忙看下,在Picture控件里画图为什么运行很慢。
我的Dialog窗体中有个Picture控件(IDC_CHESSBOARD),想要在Picture控件上画图。
图能正确显示,就是很费CPU,不知怎么回事?如果在this中画就没问题。
void CChessDlg::OnPaint()
{
CPaintDC dc(GetDlgItem(IDC_CHESSBOARD));
CDC MemDC;
CBitmap * pOldBmp;
int i,j;
POINT pt;
MemDC.CreateCompatibleDC(&dc);
m_BmChessBoard.LoadBitmap(IDB_CHESSBOARD);
pOldBmp = MemDC.SelectObject(&m_BmChessBoard);
for(i=0;i<10;i++)
{
for(j=0;j<9;j++)
{
if(m_byChessBoard[i][j] == NOCHESS) continue;
pt.x = j * GRID_WIDTH + EDGE_WIDTH; //除去左边界并获取坐标
pt.y = i * GRID_HEIGHT + EDGE_HEIGHT; //除去上边界并获取坐标
m_Chessman.Draw(&MemDC,m_byChessBoard[i][j]-1,pt,ILD_TRANSPARENT);
}
}
//绘制用户正在拖动的棋子
if(m_MoveChess.ChessID != NOCHESS)
m_Chessman.Draw(&MemDC,m_MoveChess.ChessID - 1,m_MoveChess.pMovePoint,ILD_TRANSPARENT);
dc.BitBlt(0,0,m_iBoardWidth,m_iBoardHeight,&MemDC,0,0,SRCCOPY);
//将绘制的内容刷新到屏幕
MemDC.SelectObject(&pOldBmp); //恢复内存Dc的原位图
MemDC.DeleteDC(); //释放内存
m_BmChessBoard.DeleteObject(); //删除棋盘位图对象
}