private bool Load() { try { ShowProgress(DispatcherResMessage("Editor.LoadingFrames"), ListFrames.Count); var color = System.Drawing.Color.FromArgb(Settings.Default.ClickColor.A, Settings.Default.ClickColor.R, Settings.Default.ClickColor.G, Settings.Default.ClickColor.B); foreach (FrameInfo frame in ListFrames) { #region Cursor Merge if (Settings.Default.ShowCursor && frame.CursorInfo != null) { try { using (var imageTemp = frame.ImageLocation.From()) { using (var graph = Graphics.FromImage(imageTemp)) { #region Mouse Clicks if (frame.CursorInfo.Clicked && Settings.Default.MouseClicks) { //TODO: Center the aura to the x,y 0,0 point. var rectEllipse = new Rectangle((int)frame.CursorInfo.Position.X - 5, (int)frame.CursorInfo.Position.Y - 5, frame.CursorInfo.Image.Width - 5, frame.CursorInfo.Image.Height - 5); graph.DrawEllipse(new System.Drawing.Pen(new SolidBrush(System.Drawing.Color.FromArgb(120, color)), frame.CursorInfo.Image.Width), rectEllipse); } #endregion var rect = new Rectangle( (int)frame.CursorInfo.Position.X, (int)frame.CursorInfo.Position.Y, frame.CursorInfo.Image.Width, frame.CursorInfo.Image.Height); graph.DrawImage(frame.CursorInfo.Image, rect); graph.Flush(); } imageTemp.Save(frame.ImageLocation); } frame.CursorInfo.Image.Dispose(); frame.CursorInfo = null; } catch (Exception) { } } #endregion var itemInvoked = Dispatcher.Invoke(() => { var item = new FrameListBoxItem { FrameNumber = ListFrames.IndexOf(frame), Image = frame.ImageLocation, Delay = frame.Delay }; return item; }); Dispatcher.InvokeAsync(() => { FrameListView.Items.Add(itemInvoked); UpdateProgress(itemInvoked.FrameNumber); }); } return true; } catch (Exception ex) { LogWriter.Log(ex, "Frame Loading"); return false; } }
private bool LoadSelected(int start, int? end) { end = end ?? ListFrames.Count - 1; UpdateProgress(0); try { //For each changed frame. for (int index = start; index <= end; index++) { //Check if within limits. if (index <= FrameListView.Items.Count - 1) { #region Edit the existing frame Dispatcher.Invoke(() => { FrameListBoxItem frame = (FrameListBoxItem)FrameListView.Items[index]; frame.FrameNumber = index; frame.Delay = ListFrames[index].Delay; frame.Image = null; //To update the image. frame.Image = ListFrames[index].ImageLocation; frame.UpdateLayout(); frame.InvalidateVisual(); }); #endregion } else { #region Create another frame Dispatcher.Invoke(() => { var item = new FrameListBoxItem { FrameNumber = index, Image = ListFrames[index].ImageLocation, Delay = ListFrames[index].Delay }; FrameListView.Items.Add(item); }); #endregion } UpdateProgress(index); } if (ListFrames.Count > 0) Dispatcher.Invoke(() => { FilledList = true; }); return true; } catch (Exception ex) { LogWriter.Log(ex, "Frame Loading Error"); return false; } }
private bool Load() { try { Dispatcher.Invoke(() => { FrameListView.Items.Clear(); FrameListView.UpdateLayout(); ZoomBoxControl.Visibility = Visibility.Visible; WelcomeGrid.BeginStoryboard(FindResource("HideWelcomeBorderStoryboard") as Storyboard, HandoffBehavior.Compose); }); ShowProgress("Loading Frames", ListFrames.Count); if (ListFrames != null) { foreach (FrameInfo frame in ListFrames) { #region Cursor Merge if (Settings.Default.ShowCursor && frame.CursorInfo != null) { try { using (var imageTemp = frame.ImageLocation.From()) { using (var graph = Graphics.FromImage(imageTemp)) { #region Mouse Clicks if (frame.CursorInfo.Clicked && Settings.Default.MouseClicks) { //Draws the ellipse first, to get behind the cursor. var rectEllipse = new Rectangle( (int)frame.CursorInfo.Position.X - (frame.CursorInfo.Image.Width / 2), (int)frame.CursorInfo.Position.Y - (frame.CursorInfo.Image.Height / 2), frame.CursorInfo.Image.Width - 10, frame.CursorInfo.Image.Height - 10); graph.DrawEllipse(new System.Drawing.Pen(new SolidBrush(System.Drawing.Color.Yellow), 3), rectEllipse); } #endregion var rect = new Rectangle( (int)frame.CursorInfo.Position.X, (int)frame.CursorInfo.Position.Y, frame.CursorInfo.Image.Width, frame.CursorInfo.Image.Height); graph.DrawImage(frame.CursorInfo.Image, rect); graph.Flush(); } imageTemp.Save(frame.ImageLocation); } frame.CursorInfo.Image.Dispose(); frame.CursorInfo = null; } catch (Exception) { } } #endregion var itemInvoked = Dispatcher.Invoke(() => { var item = new FrameListBoxItem { FrameNumber = ListFrames.IndexOf(frame), Image = frame.ImageLocation, Delay = frame.Delay }; return item; }); Dispatcher.InvokeAsync(() => { itemInvoked.PreviewMouseLeftButtonDown += Item_PreviewMouseLeftButtonDown; FrameListView.Items.Add(itemInvoked); UpdateProgress(itemInvoked.FrameNumber); }); } if (ListFrames.Count > 0) Dispatcher.Invoke(() => { FilledList = true; }); } HideProgress(); return true; } catch (Exception ex) { LogWriter.Log(ex, "Frame Loading Error"); return false; } }