读书人

drawtext在位图bitmap上无法输出文字解

发布时间: 2012-04-14 17:14:21 作者: rapoo

drawtext在位图bitmap上无法输出文字
如有中英文错误,是上贴时输入的。

擦除了背景色

C/C++ code
void CEc31View::OnDraw(CDC* pDC){    CDC dc;    dc.CreateCompatibleDC(NULL);    CRect rect;    GetClientRect(&rect);    CBitmap bitmap;    bitmap.CreateCompatibleBitmap(pDC,rect.Width(),rect.Height());    dc.SelectObject(bitmap);    dc.FillSolidRect(0,0,rect.Width(),rect.Height(),RGB(255,255,255));    dc.SelectObject(m_bitmap);    m_measure.Draw(&dc);//    m_measure.Draw(pDC);    //不正确//    dc.DrawText("dffdfdfd",CRect(0,0,100,100),DT_LEFT | DT_TOP);    //可以正确输出    pDC->BitBlt(0,0,rect.Width(),rect.Height(),&dc,0,0,SRCCOPY);    bitmap.DeleteObject();    dc.DeleteDC();}//方法m_measure.Draw(&dc); 内调用的DrawLine(CDC* pDC,MeasureInfo* temp)void CMeasure::DrawLine(CDC* pDC,MeasureInfo* temp){    //线        if(temp->nCount < 2)        return ;    pDC->MoveTo(temp->pDrawPt[0]);    pDC->LineTo(temp->pDrawPt[1]);    //可正确画线    int x,y,a,b;    x=temp->pDrawPt[0].x+1;    y=temp->pDrawPt[0].y+1;    a=temp->pDrawPt[0].x+100;    b=temp->pDrawPt[0].y+100;    //x y a b四个值正确//    int i=pDC->DrawText("dfsdf",CRect(x,    //不能输出   dfsdf///        y,a,b),DT_LEFT | DT_TOP);    int i=pDC->DrawText(temp->str,CRect(temp->pDrawPt[0].x+1,    // i 的返回值不正常,有时很大        temp->pDrawPt[0].y+1,temp->pDrawPt[0].x+100,temp->pDrawPt[0].y+100),DT_LEFT | DT_TOP);}

注:同样的代码在另一个没有擦除背景色的工程中,可以正确输出

请高手们解决
不胜感激


[解决办法]
dc.SelectObject(bitmap);
dc.FillSolidRect(0,0,rect.Width(),rect.Height(),RGB(255,255,255));
dc.SelectObject(m_bitmap);
m_bitmap哪来的
[解决办法]
OnDraw()函数里DC和Bitmap有点混乱,找个示例代码看看
[解决办法]
dc.CreateCompatibleDC(NULL);
->
dc.CreateCompatibleDC(pDC);
剩下的自己Debug调试一下,看看哪里的问题
[解决办法]
你所说的擦出背景指什么
dc.SelectObject(m_bitmap);
这句又是什么意思
[解决办法]
感觉是你的位图和dc混乱了
[解决办法]
被其它的擦除了
[解决办法]
既然你在OnDraw里

dc.DrawText("dffdfdfd",CRect(0,0,100,100),DT_LEFT | DT_TOP);

是正确的,说明画图没问题,肯定在DrawLine里有问题,看看pDrawPt里的值有没有问题!

读书人网 >VC/MFC

热点推荐