示例#1
0
        protected void OnFileDialogAddFrameFileOk(object sender, CancelEventArgs e)
        {
            // load bitmap from file
            Bitmap bitmap = new Bitmap(fdAddFrame.FileName);

            // get pixels
            byte[] pixelData = BgfBitmap.BitmapToPixelData(bitmap);

            // create BgfBitmap
            BgfBitmap bgfBitmap = new BgfBitmap(
                (uint)Program.CurrentFile.Frames.Count + 1,
                Program.CurrentFile.Version,
                (uint)bitmap.Width,
                (uint)bitmap.Height,
                0,
                0,
                new BgfBitmapHotspot[0],
                false,
                0,
                pixelData);

            // cleanp temporary bitmap
            bitmap.Dispose();

            // add to frames
            Program.CurrentFile.Frames.Add(bgfBitmap);
        }
示例#2
0
        /// <summary>
        /// Swaps in a new image for a given frame, keeping offets, hotspots and group data.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void OnFileDialogChangeFrameFileOk(object sender, CancelEventArgs e)
        {
            // Must have a valid frame selected.
            if (SelectedFrame == null)
            {
                return;
            }
            int selected_index = (int)SelectedFrame.Num - 1;

            if (selected_index < 0)
            {
                return;
            }

            BgfBitmap item = Program.CurrentFile.Frames[selected_index];

            // load bitmap from file
            Bitmap bitmap = new Bitmap(fdChangeFrame.FileName);

            // get pixels
            byte[] pixelData = BgfBitmap.BitmapToPixelData(bitmap);

            // create BgfBitmap
            BgfBitmap bgfBitmap = new BgfBitmap(
                item.Num,
                Program.CurrentFile.Version,
                (uint)bitmap.Width,
                (uint)bitmap.Height,
                item.XOffset,
                item.YOffset,
                new BgfBitmapHotspot[0],
                false,
                0,
                pixelData);

            // cleanp temporary bitmap
            bitmap.Dispose();

            foreach (BgfBitmapHotspot h in item.HotSpots)
            {
                bgfBitmap.HotSpots.Add(h);
            }
            Program.HasFileChanged = true;

            Program.CurrentFile.Frames.RemoveAt(selected_index);
            Program.CurrentFile.Frames.Insert(selected_index, bgfBitmap);
            dgFrames.Rows[selected_index].Selected = true;
            UpdateFrameSetFlow();
        }
        /// <summary>
        /// Internal thread loop
        /// </summary>
        protected void ThreadProc()
        {
            uint   version = Program.CurrentFile.Version;
            Bitmap bitmap;

            while (IsRunning)
            {
                while (Program.BitmapFileQueue.TryDequeue(out string file))
                {
                    // load bitmap from file
                    bitmap = new Bitmap(file);

                    // get pixels
                    byte[] pixelData = BgfBitmap.BitmapToPixelData(bitmap);

                    // create BgfBitmap
                    BgfBitmap bgfBitmap = new BgfBitmap(
                        0, // num determined when adding to list after dequeue
                        version,
                        (uint)bitmap.Width,
                        (uint)bitmap.Height,
                        0,
                        0,
                        new BgfBitmapHotspot[0],
                        false,
                        0,
                        pixelData);

                    // cleanp temporary bitmap
                    bitmap.Dispose();

                    // enqueue for adding to frames
                    Program.BgfBitmapQueue.Enqueue(bgfBitmap);
                }

                // Done
                IsRunning = false;
            }
        }