注册 登录
编程论坛 VC++/MFC

多文档程序在cview类ondraw函数里传参绘图遇到的怪现象,

lanriver 发布于 2012-09-12 00:39, 930 次点击
void CLCADView::OnDraw(CDC* pDC)
{
    CLCADDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    // TODO: add draw code for native data here
    CRect rect;
    GetClientRect(&rect);
    CDC MemDC;   
    MemDC.CreateCompatibleDC(pDC);   
    CBitmap bitmap, *pOldBitmap2;
    bitmap.CreateCompatibleBitmap(pDC, rect.Width(), rect.Height());
    pOldBitmap2 = MemDC.SelectObject(&bitmap);
    COLORREF    m_bkColor;
    m_bkColor = RGB(0x00,0xFF,0x00);
    MemDC.FillSolidRect(0, 0, rect.Width(), rect.Height(), m_bkColor);
    int y=GetDocument()->h;//GetDocument()->h在文档类里打开文件获得高度
    int x=GetDocument()->w;//GetDocument()->w在文档类里打开文件获得宽度
    int u=y*x;
    int v=0;
    int w=0;
    unsigned char dac[256][3];
    memcpy(dac,GetDocument()->DAC,sizeof(GetDocument()->DAC));//文档类里读取的颜色表数组拷贝到dac数组中
    unsigned char *pdata=GetDocument()->pBmpBuf;//文档类中的pBmpBuf数据块指针与pdata指针联系起来   
 /////////////////////////////////////////////////////////////////////////////
//将高度,宽度,数据块,传参后打开文件后只显示绘的背景色,bmp不显示到客户区,如果打开两次文件bmp图又能绘到客户区
   for(int i=0;i<y;i++)
      {
        for (int j=0;j<x;j++)         
        {
            if(v<u)
            {
                w=pdata[v++];
                int r=dac[w][0];int g=dac[w][1];int b=dac[w][2];
                MemDC.SetPixel(j,i,RGB(r,g,b));            
            }
        }
       }
/////////////////////////////////////////////////////////////////////////////////
//上面用for循环那段代码改成下面注释区代码,在打开文件后生成窗口,背景和画的点能够正常显示到客户区,求给位老师解决帮小徒解决下问题,先谢谢了!

/*
 for(int i=0;i<10;i++)
      {
        for (int j=0;j<10;j++)         
        {
           MemDC.SetPixel(j,i,RGB(20,20,100));         
         }
       }
*/
    //MemDC.SelectObject(bitmap);
    pDC->BitBlt(0, 0, rect.Width(), rect.Height(), &MemDC, 0, 0, SRCCOPY);
    ReleaseDC(pDC);
}

[ 本帖最后由 lanriver 于 2012-9-12 00:41 编辑 ]
2 回复
#2
lanriver2012-09-12 00:44
由于有特殊用处,所以必须画点,所以LoadBitmap用不到。自己先顶了,期待老师能解决。
#3
lanriver2012-09-14 21:10
谢谢关注的朋友们,问题已经自己解决,所以停止悬赏,希望帖子能够沉下去,留给努力的朋友们。
1