Під час переміщення миші при натиснутій лівій кнопці точка розширюється до прямокутника, ліва верхня вершина якого знаходиться в тих самих координатах, де було натиснуто ліву кнопку миші. Поясняю при нажатой мышке onmousmove должен прорисоватся прямоугольник из точки которая была создана при OnLButtonDown собственно я как понимаю алгоритм создаётся 4 точки с координатами x,y причём x1,y1 будут равны m_pointOld.x и m_pointOld.y Собственно вопрос как мне разместить остальные координаты ТАК чтобы при OnMousMove из точки которая была создана на OnLButtonDowm создавался прямоугольник и при OnMousMove он расширялся в левый нижний угол нужен собственно тупо код данной реализации (при движении мышка идёт прорисовка прямоугольника потом его зарисовка и прорисовка с новыми координатами)
вот еще. с цветом Code: POINT p1; BOOL b_Drawing; void CtestrectDlg::OnMouseMove(UINT nFlags, CPoint point) { CDC *pdc = GetDC(); RECT rc; CBrush cbr; cbr.CreateSolidBrush(RGB(128,128,128)); GetClientRect(&rc); pdc->FillRect(&rc, &cbr); if(b_Drawing){ cbr.CreateSolidBrush(RGB(128,128,255)); pdc->SelectObject(&cbr); pdc->Rectangle(p1.x, p1.y, point.x, point.y); } } void CtestrectDlg::OnLButtonDown(UINT nFlags, CPoint point) { p1.x = point.x; p1.y = point.y; b_Drawing = TRUE; } void CtestrectDlg::OnLButtonUp(UINT nFlags, CPoint point) { b_Drawing = FALSE; }
всёто хоршо)) только не что что нада) смотре в том коже что ты дал ты жмёш мышку получаеш коррдинаты дальше мышка может двигатся В ЛЮБУЮ СТОРОНУ но прямоугольник должен расшырятся в левый нижний угол) вот так вот))
Смотри p1.x = point.x; p1.y = point.y; получили координату где мы кликнули Дальше мышку можно двигать а любую сторону (клиентской облости) (сейчас реализовано то что когда двигаеш прямоугольник вдигается в туже сторону что и движение мышки) Дальше при движении в любую сторону прямоугольник должен увеличиватся в левй нижний угол вот так ------- | | -------- (начало координат) ------------- | | | | | | ------------- вот так )чтобы при движении в любом направлении прямоугольник увеличивается в определёную сторону (пробелы смазались но думаю понятно)
это ты имел ввиду? Code: POINT p1, p2, delta; BOOL b_Drawing; void CtestrectDlg::OnMouseMove(UINT nFlags, CPoint point) { CDC *pdc = GetDC(); RECT rc; CBrush cbr; cbr.CreateSolidBrush(RGB(128,128,128)); GetClientRect(&rc); pdc->FillRect(&rc, &cbr); if(b_Drawing){ cbr.CreateSolidBrush(RGB(128,128,255)); pdc->SelectObject(&cbr); delta.x = abs(delta.x - point.x); delta.y = abs(delta.y - point.y); p2.x = p2.x - delta.x; p2.y = p2.y + delta.y; pdc->Rectangle(p1.x, p1.y, p2.x, p2.y); } delta.x = point.x; delta.y = point.y; } void CtestrectDlg::OnLButtonDown(UINT nFlags, CPoint point) { p1.x = point.x; p1.y = point.y; p2.x = p1.x; p2.y = p1.y; b_Drawing = TRUE; } void CtestrectDlg::OnLButtonUp(UINT nFlags, CPoint point) { b_Drawing = FALSE; }