public void SelectPoint() { selectpointstate = SELECT_POINT_STATES.SPS_SELECT; }
protected override IntPtr WndProc(IntPtr handle, int message, IntPtr wparam, IntPtr lparam, ref bool handled) { try { switch (message) { case WM_PAINT: { Paint paint; BeginPaint(handle, out paint); scene.Draw(); // Перерисовка содержимого EndPaint(handle, ref paint); handled = true; } break; case WM_SIZE: scene.Resize(handle); // Обработка изменения размеров handled = true; break; case WM_LBUTTONUP: { int x = (int)lparam; // выбор линии if (selectpolystate) { selectpolystate = false; scene.ChangePoly(x & 0xffff, x >> 16); InvalidateRect(handle, (IntPtr)0, 1); RestorePolyColor(); } else // выбор точки if (selectpointstate == SELECT_POINT_STATES.SPS_SELECT) { selectpointstate = SELECT_POINT_STATES.SPS_MOVE; scene.ChangePoint(x & 0xffff, x >> 16); InvalidateRect(handle, (IntPtr)0, 1); } else // перенос точки if (selectpointstate == SELECT_POINT_STATES.SPS_MOVE) { selectpointstate = SELECT_POINT_STATES.SPS_NOP; scene.ChangePoint(x & 0xffff, x >> 16); InvalidateRect(handle, (IntPtr)0, 1); } // построение ломаной else { scene.AddPoint(x & 0xffff, x >> 16); InvalidateRect(handle, (IntPtr)0, 1); } } break; } } catch (Exception e) { MessageBox.Show(e.Message); } return(base.WndProc(handle, message, wparam, lparam, ref handled)); }