SelectObject((HBRUSH)GetStockObject(NULL_BRUSH));

解决方案 »

  1.   

      用  CDC::Draw3DRect
      

  2.   

    fd朋友说的Draw3DRect能画一个矩形而不填充吗?
    能否详细解释一下 ?
      

  3.   

      是,看msdn 很简单
      

  4.   

    Holly,用你的方法好像不怎么行,能不能给个例子。
    email:
    [email protected]
      

  5.   

    void CMyView::OnDraw(CDC* pDC)
    {
        CMyDoc* pDoc = GetDocument();
        ASSERT_VALID(pDoc);
        // TODO: add draw code for native data here
        SelectObject(pDC->GetSafeHdc(), (HBRUSH)GetStockObject(NULL_BRUSH));
        pDC->Rectangle(10, 10, 100, 200);
        pDC->Rectangle(20, 20, 110, 210);
    }
      

  6.   

    void CMyView::OnDraw(CDC* pDC)
    {
        CMyDoc* pDoc = GetDocument();
        ASSERT_VALID(pDoc);
        // TODO: add draw code for native data here
        CBrush brush;
        brush.CreateStockObject(NULL_BRUSH);
        CBrush * pOldbrush=pDC->SelectObject(&brush);
        //draw rect in here;
        pDC->SelectObject(pOldbrush);
    }
      

  7.   

    LineTo
    LineTo
    LineTo
    再LineTo搞定
      

  8.   

    void DrawRectangle0(CDC *pDC, CRect *pRect)
    {
    POINT p[5];
    p[0].x = pRect->left; p[0].y = pRect->top;
    p[1].x = pRect->right; p[1].y = pRect->top;
    p[2].x = pRect->right; p[2].y = pRect->bottom;
    p[3].x = pRect->left; p[3].y = pRect->bottom;
    p[4].x = pRect->left; p[4].y = pRect->top;
    pDC->Polygon (&p[0], 5);
    }void DrawRectangle1(CDC *pDC, CRect *pRect)
    {
        CBrush brush, *pOldBrush;
        brush.CreateStockObject(NULL_BRUSH);
        pOldBrush=pDC->SelectObject(&brush);
    pDC->Rectangle(pRect);
        pDC->SelectObject(pOldBrush);
    }void DrawRectangle2(CDC *pDC, CRect *pRect)
    {
    pDC->MoveTo(pRect->left, pRect->top);
    pDC->LineTo(pRect->right,pRect->top);
    pDC->LineTo(pRect->right,pRect->bottom);
    pDC->LineTo(pRect->left, pRect->bottom);
    pDC->LineTo(pRect->left, pRect->top);
    }#define TEST_COUNT  1000void CTestDrawView::OnDraw(CDC* pDC)
    {
    CTestDrawDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    // TODO: add draw code for native data here
    long l[3][3];
    int  i;
    CRect rect(1,1,400,400); l[0][0] = GetTickCount();
    for(i=0;i<TEST_COUNT;i++)
    DrawRectangle0(pDC, &rect);
    l[0][1] = GetTickCount(); l[1][0] = GetTickCount();
    for(i=0;i<TEST_COUNT;i++)
    DrawRectangle1(pDC, &rect);
    l[1][1] = GetTickCount(); l[2][0] = GetTickCount();
    for(i=0;i<TEST_COUNT;i++)
    DrawRectangle2(pDC, &rect);
    l[2][1] = GetTickCount(); l[0][2] = l[0][1] - l[0][0];
    l[1][2] = l[1][1] - l[1][0];
    l[2][2] = l[2][1] - l[2][0]; CString strTmp;
    strTmp.Format("0,1,2方法分别耗时:%d,%d,%d", l[0][2],l[1][2], l[2][2]);
    pDC->TextOut(1, 410, strTmp);
    }结果是:1833,130,120
    感谢各位的参与!!!
      

  9.   

    你为何没有对我的方法评测:
    void DrawRectangle3(CDC *pDC, CRect *pRect)
    {
    SelectObject(pDC->GetSafeHdc(), (HBRUSH)GetStockObject(NULL_BRUSH));
    pDC->Rectangle(pRect);
    }
    我估计这才是最快的!