+ -
当前位置:首页 → 问答吧 → 已经用兼容DC画好图了,但是不能在屏幕上显示

已经用兼容DC画好图了,但是不能在屏幕上显示

时间:2011-12-01

来源:互联网

C/C++ code
void CTran1_6View::OnShowpadonly() 
{            
    CClientDC dc(this);
    if(!m_dcCompatible.m_hDC)
    {    //CRect rect;
        CTran1_6Doc* pDoc = GetDocument();
        ASSERT_VALID(pDoc);
    //    GetClientRect(&rect);
        CRect rect=pDoc->PCBBroadSize;
        m_dcCompatible.CreateCompatibleDC(&dc);

        CBitmap bitmap;
        bitmap.CreateCompatibleBitmap(&dc,rect.Width(),rect.Height());
        m_dcCompatible.SelectObject(&bitmap);
        CBrush BrushPad(RGB(0,0,0));
        CBrush BrushHole(RGB(255,255,255));
        m_dcCompatible.BitBlt(0,0,rect.Width(),rect.Height(),&dc,0,0,SRCCOPY);
        
        for(int i=0;i<pDoc->DrawPadArray.GetSize();i++)
        {    
            CBrush *OldBrush=m_dcCompatible.SelectObject(&BrushPad);
            CRect PadRect;
            CRect HoleRect;
            PadRect=((CDrawPadInfo*)(pDoc->DrawPadArray.GetAt(i)))->PadRect;
            if(1==((CDrawPadInfo*)(pDoc->DrawPadArray.GetAt(i)))->type)
            {
                m_dcCompatible.Ellipse(PadRect);
            }
            else
            {
                m_dcCompatible.Rectangle(PadRect);
            }
            HoleRect=((CDrawPadInfo*)(pDoc->DrawPadArray.GetAt(i)))->HoleRect;
            OldBrush=m_dcCompatible.SelectObject(&BrushHole);
            m_dcCompatible.SelectObject(&OldBrush);
            m_dcCompatible.Ellipse(HoleRect);
        }
    //CRect rect2;
    //GetClientRect(&rect2);
    //dc.StretchBlt(0,0,rect2.Width(),rect2.Height(),&m_dcCompatible,0,0,rect.Width(),rect.Height(),SRCCOPY);
    }
}

然后:
C/C++ code
void CTran1_6View::OnDraw(CDC* pDC)
{
    CTran1_6Doc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    // TODO: add draw code for native data here
    CRect rect2;
    GetClientRect(&rect2);
    CRect rect=pDoc->PCBBroadSize;
    pDC->StretchBlt(0,0,rect2.Width(),rect2.Height(),&m_dcCompatible,0,0,rect.Width(),rect.Height(),SRCCOPY);
}


调出来没有然和反应,我的思路是用兼容DC画在BITMAP上,然后导入CLIENTDC画,但是BITMAP的大小和CLIENTDC大小不一样。
谢谢大家指点~!

作者: darkwhitesnow   发布时间: 2011-12-01

把你绘图相关的代码放到OnDraw函数中去

作者: VisualEleven   发布时间: 2011-12-01

绘图在OnDraw函数里面绘制。。。

作者: shen_wei   发布时间: 2011-12-01

好的~然后还想问为什么我这段东西不行?~调试没错,但是显示不了

作者: darkwhitesnow   发布时间: 2011-12-01