如果要在一个矩形外面画边框,想到了两种办法,请问哪种更有效率?第一种 CBrush brush,*oldbrush;
brush.CreateStockObject(NULL_BRUSH);
oldbrush = pDC->SelectObject(&brush);
pDC->Rectangle(nTarLeft, nTarTop, nTarLeft+nTarWidth, nTarTop+nTarHeight);
pDC->SelectObject(oldbrush);第二种 pDC->MoveTo(nTarLeft, nTarTop);
pDC->LineTo(nTarLeft, nTarTop+nTarHeight);
pDC->LineTo(nTarLeft+nTarWidth, nTarTop+nTarHeight);
pDC->LineTo(nTarLeft+nTarWidth, nTarTop);
pDC->LineTo(nTarLeft, nTarTop);
哪种更有效率?或者你的喜好?还有其他画框的办法吗?

解决方案 »

  1.   

    这两者功能不一样啊
    第一个不是画边框,是填充矩形。画边框用FrameRect
    第二个是画线,FrameRect的内部实现还是画四条线。
      

  2.   

    “填充矩形“ 当然 要 画刷。”画边框用FrameRect”
      

  3.   

    由于考虑画线也要定义一个CPen,所以定义个画刷也就算了。画四线估计被判定为有问题,所以就画个刷吧。
    CBrush brush;
    brush.CreateSolidBrush(RGB(0,0,0));
    pDC->FrameRect(CRect(nTarLeft, nTarTop, nTarLeft+nTarWidth, nTarTop+nTarHeight), &brush);