使用PatBlt绘制矩形/线条

时间:2018-05-22 05:50:10

标签: mfc

我使用链接中给出的示例应用程序绘制标尺。

http://www.ucancode.net/Visual_C_Source_Code/MFC-MDI-SDI-Example-create-ruler-scrollview-splitter.htm

在移动光标时,他们正在绘制黑线标记。我想在微软绘画应用程序中绘制红色线。

在样本中,他们使用下面的代码绘制线。

绘制红色线需要做些什么。

void CRulerView::DrawCursorPos(CPoint NewPos)
 {
    if (((m_rulerType == RT_HORIZONTAL) && (NewPos.x > m_DocSize.cx*m_fZoomFactor)) ||
    ((m_rulerType == RT_VERTICAL) && ((NewPos.y) > m_DocSize.cy*m_fZoomFactor)))
    return;

CDC* pDC = GetDC();
// set the map mode right
int oldMapMode = pDC->SetMapMode(MM_TEXT);
//HBRUSH hBr=CreateSolidBrush(RGB(255,0,0));
//pDC->SelectObject(hBr);
//CBrush* pTempBrush = NULL;
    // pTempBrush = (CBrush*)pDC->SelectObject(&hBr);

CRect clientRect;
GetClientRect(&clientRect);
if (m_rulerType==RT_HORIZONTAL)
{

    // erase the previous position
    pDC->PatBlt(m_lastPos.x, clientRect.top, 1, clientRect.bottom, DSTINVERT);
    // draw the new position
    m_lastPos.x = NewPos.x;
    pDC->PatBlt(m_lastPos.x, clientRect.top, 1, clientRect.bottom, DSTINVERT);
}
else // (m_rulerType==RT_VERTICAL)
{
    // erase the previous position
    pDC->PatBlt(clientRect.left, m_lastPos.y, clientRect.right, 1, DSTINVERT);
    // draw the new position
    m_lastPos.y = NewPos.y;
    pDC->PatBlt(clientRect.left, m_lastPos.y, clientRect.right, 1, DSTINVERT);
}
//pDC->SelectObject(&pTempBrush);

pDC->SetMapMode(oldMapMode);
ReleaseDC(pDC);
  }

0 个答案:

没有答案