Item of a ListBox, basically an imagem with a number.
Inheritance: System.Windows.Controls.ListViewItem
Beispiel #1
0
        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;
            }
        }
Beispiel #2
0
        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;
            }
        }
Beispiel #3
0
        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;
            }
        }