Exemplo n.º 1
0
 public void SelectPoint()
 {
     selectpointstate = SELECT_POINT_STATES.SPS_SELECT;
 }
Exemplo n.º 2
0
        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));
        }