Как удалить предыдущую нарисованную фигуру из mouseOver? - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь нарисовать прямоугольник на виде.Когда пользователь удерживает левую кнопку во время перемещения мыши, он должен показывать форму, но не рисовать, пока не будет отпущена левая кнопка мыши (что-то вроде Paint).

Моя текущая проблема заключается в том, что когда я перемещаю мышь с помощьюлевая кнопка вниз, она рисует прямоугольник в каждой позиции, в которую перемещается моя мышь.Таким образом, на экране появляются тонны прямоугольника.

Я хочу знать, как удалить предыдущий, когда моя мышь переместилась на новую позицию или мой подход совершенно неправильный.

Iтолько ограниченный опыт из проекта каракулей.

void CMFCCalView::OnLButtonUp(UINT nFlags, CPoint point)
{
if (GetCapture() != this) {
    return;
}

CMFCCalDoc *pDoc = GetDocument();
CClientDC dc(this);

CPen *oldPen = dc.SelectObject(pDoc->getCurrentPen());
currShape->setEnding(point);
pDoc->m_shapeList.AddTail(currShape);
dc.SelectObject(oldPen);
ReleaseCapture();
return;
}


void CMFCCalView::OnLButtonDown(UINT nFlags, CPoint point)
{
CClientDC dc(this);
CMFCCalDoc *pDoc = GetDocument();
currShape = pDoc->newShape();
currShape->setBegining(point);
//  pDoc->debug.Format(_T("Shape : %d"),currShape->getShape());
SetCapture();
prePoint = point;
return;
}


void CMFCCalView::OnMouseMove(UINT nFlags, CPoint point)
{
if (GetCapture() != this) return;
CClientDC dc(this);
CPen *oldPen = dc.SelectObject(GetDocument()->getCurrentPen());
currShape->setEnding(point);
currShape->drawShape(&dc);
dc.SelectObject(oldPen);
prePoint = point;
return;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...