Рисование прямоугольника / линий с использованием PatBlt - PullRequest
0 голосов
/ 22 мая 2018

Я рисую линейку, используя пример приложения, указанный в ссылке.

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

При перемещении курсора они рисуют черную линию маркера.Я хочу нарисовать линию красного цвета, как в приложении Microsoft Paint.

В примере они используют приведенный ниже код для рисования линии.

Что нужно сделать, чтобы нарисовать линию красного цвета.

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);
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...