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); }
/// <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; } }