Example #1
0
        private void TilesetControl_MouseMove(object sender, MouseEventArgs e)
        {
            int w = Width / tile_width * tile_width;
            int h = Height / tile_height * tile_height;

            if (_is_multi && _multi_select && e.X > 0 && e.Y > 0 && e.X < w && e.Y < h)
            {
                short Current = GetTileIndexAt(e.X, e.Y);
                if (Current != -1 && !SelectedTiles.Contains(Current))
                {
                    SelectedTiles.Add(Current);
                    SelectedX.Add(e.X / tile_width / Zoom);
                    SelectedY.Add(e.Y / tile_height / Zoom);
                    Refresh();
                }
            }

            if (CanDrag && do_drag && _selection != -1)
            {
                int xx = drag_start.X - e.X;
                int yy = drag_start.Y - e.Y;
                if (Math.Sqrt(xx * xx + yy * yy) > 4)
                {
                    Frame frame = new Frame();
                    frame.Index = (short)_selection;
                    DoDragDrop(new DataObject("ImageFrame", frame), DragDropEffects.All);
                    do_drag = false;
                }
            }
        }
Example #2
0
 private void TilesetControl_MouseDown(object sender, MouseEventArgs e)
 {
     if (e.Button == MouseButtons.Left || e.Button == MouseButtons.Right)
     {
         drag_start = e.Location;
         do_drag    = true;
         if (!_ctrl)
         {
             SelectedTiles.Clear(); // if no ctrl-click, clear the selection.
             SelectedX.Clear();
             SelectedY.Clear();
             SelectedIndices = SelectedTiles.ToArray();
         }
         short Current = GetTileIndexAt(e.X, e.Y);
         if (Current != -1)
         {
             if (!_is_multi)
             {
                 _selection = Current;
             }
             if (!SelectedTiles.Contains(Current))
             {
                 SelectedTiles.Add(Current);
                 SelectedX.Add(e.X / tile_width / Zoom);
                 SelectedY.Add(e.Y / tile_height / Zoom);
             }
             else if (_ctrl)
             {
                 SelectedTiles.Remove(Current);
                 SelectedX.Remove(e.X / tile_width / Zoom);
                 SelectedY.Remove(e.Y / tile_height / Zoom);
             }
         }
         _multi_select = true;
         Refresh();
     }
 }