예제 #1
0
        public void Init()
        {
            int i = 0;

            foreach (Direction d in _sprite.Directions)
            {
                DirectionLayout layout = new DirectionLayout(_sprite, d, this);
                layout.OnFrameClick += layout_OnFrameClick;
                layout.Modified     += Modified;
                layout.Zoom          = _zoom;
                DirectionHolder.Controls.Add(layout);
                layout.Location = new Point(2, i++ *(layout.Height + 2) + 2);
            }
            ((DirectionLayout)DirectionHolder.Controls[0]).Select(0);
            _selectedFrame       = ((DirectionLayout)DirectionHolder.Controls[0]).SelectedFrame;
            SpriteDrawer.Content = (Bitmap)_sprite.GetImage((((DirectionLayout)DirectionHolder.Controls[0]).SelectedFrame.Index));
            SpriteDrawer.ZoomIn();
            SpriteDrawer.ZoomIn();
            _tilesetCtrl = new TilesetControl2 {
                Tileset = SphereStudio.Vanilla.Tileset.FromSpriteset(_sprite), CanInsert = false
            };
            _tilesetCtrl.ZoomIn();
            _tilesetCtrl.Anchor        = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top;
            _tilesetCtrl.TileSelected += _tileset_ctrl_TileSelected;
            _tilesetCtrl.TileAdded    += _tileset_ctrl_TileAdded;
            _tilesetCtrl.TileRemoved  += _tileset_ctrl_TileRemoved;
            ImageHolder.Controls.Add(_tilesetCtrl);
            _tilesetCtrl.Width      = ImageHolder.Width - 6;
            DirectionAnim.Sprite    = _sprite;
            DirectionAnim.Direction = _sprite.Directions[0];
            FrameBaseEditor.Frame   = _sprite.Directions[0].Frames[0];
        }
예제 #2
0
 private void AnimPanel_Paint(object sender, PaintEventArgs e)
 {
     if (_sprite == null || _dir.Frames.Count == 0)
     {
         Point ur = new Point(AnimPanel.Width, 0);
         Point lr = new Point(AnimPanel.Width, AnimPanel.Height);
         Point ll = new Point(0, AnimPanel.Height);
         e.Graphics.DrawLine(Pens.Red, Point.Empty, lr);
         e.Graphics.DrawLine(Pens.Red, ur, ll);
     }
     else
     {
         if (_dir == null)
         {
             return;
         }
         Image img = _sprite.GetImage(_dir.Name, FrameTracker.Maximum - FrameTracker.Value);
         e.Graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
         e.Graphics.DrawImage(img, 0, 0, AnimPanel.Width, AnimPanel.Height);
     }
 }
예제 #3
0
        private void FrameImage_Paint(object sender, PaintEventArgs e)
        {
            if (_sprite == null || _frame == null)
            {
                return;
            }

            Image bmap = _sprite.GetImage(_frame.Index);

            e.Graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
            e.Graphics.PixelOffsetMode   = System.Drawing.Drawing2D.PixelOffsetMode.Half;
            e.Graphics.DrawImage(bmap, FrameImage.ClientRectangle);

            using (Bitmap bg = new Bitmap(bmap.Width, bmap.Height))
            {
                using (Graphics g = Graphics.FromImage(bg))
                {
                    g.DrawRectangle(Pens.Magenta, _sprite.SpriteBase.Rectangle);
                    e.Graphics.DrawImage(bg, FrameImage.ClientRectangle);
                }
            }
        }