Exemplo n.º 1
0
        public void Main()
        {
            window = new RenderWindow(DrawS.Handle);
            window.MouseButtonPressed += new System.EventHandler <MouseButtonEventArgs>(window_mousedown);
            window.MouseWheelScrolled += new System.EventHandler <MouseWheelScrollEventArgs>(window_scroll);
            OpenFileDialog dialog = new OpenFileDialog();

            dialog.Multiselect = false;
            if (dialog.ShowDialog() == DialogResult.OK)
            {
                using (StreamReader filestream = new StreamReader(dialog.FileName))
                {
                    commands = filestream.ReadToEnd().Split(';');
                }
            }
            else
            {
                MessageBox.Show("No file selected");
                return;
            }
            //Read commands from file

            //Parse commands and add them to sprites
            for (int i = 0; i < commands.Length; i++)
            {
                string[] subCommands = commands[i].Split(',');
                sprites.Add(Drawables.parseCommand(subCommands));
            }
            //Remove empty objects
            sprites.RemoveAll(item => item == null);
            while (Visible)
            {
                Application.DoEvents();
                window.DispatchEvents();
                window.Clear();
                Update();

                //Draw Here
                for (int i = 0; i < sprites.Count; i++)
                {
                    window.Draw(sprites[i]);
                }
                if (current.drawable != null)
                {
                    window.Draw(current.drawable);
                }
                //Stop Drawing

                window.Display();
            }
        }
Exemplo n.º 2
0
        private void window_mousedown(object sender, MouseButtonEventArgs e)
        {
            if (current.drawable == null || e.Button == Mouse.Button.Right)
            {
                if (e.Button == Mouse.Button.Right && current.drawable != null)
                {
                    sprites.Add(current.drawable);
                }

                switch (Selected)
                {
                case "line":
                    current          = new DrawingCurrent();
                    current.drawable = new Line((Vector2f)Mouse.GetPosition(window), (Vector2f)Mouse.GetPosition(window), currentColor);
                    break;

                case "circle":
                    float radius = 50;
                    if (current.drawable != null)
                    {
                        if (current.drawable.GetType() == typeof(CircleShape))
                        {
                            radius = (current.drawable as CircleShape).Radius;
                        }
                    }

                    current = new DrawingCurrent();
                    CircleShape c = new CircleShape(radius);
                    c.Position         = (Vector2f)Mouse.GetPosition(window) - new Vector2f(c.Radius, c.Radius);
                    c.OutlineColor     = currentColor;
                    c.OutlineThickness = 1;
                    c.FillColor        = Color.Transparent;
                    current.drawable   = c;
                    break;

                case "text":

                    string s = "";
                    if (e.Button == Mouse.Button.Right && current.drawable.GetType() == typeof(Text))
                    {
                        s = (current.drawable as Text).DisplayedString;
                    }
                    else
                    {
                        s = Interaction.InputBox("Text", "Text");
                    }
                    SFML.Graphics.Text t = new Text(s, new Font(Properties.Resources.aileron_bold));
                    t.CharacterSize = 50;
                    t.Position      = new Vector2f(50, 55);
                    t.FillColor     = currentColor;

                    current.drawable = t;
                    break;

                case "bezier":
                    current          = new DrawingCurrent();
                    current.drawable = new BezierCurve((Vector2f)Mouse.GetPosition(window), (Vector2f)Mouse.GetPosition(window), (Vector2f)Mouse.GetPosition(window), (Vector2f)Mouse.GetPosition(window), currentColor);

                    break;
                }
            }
            else
            {
                if (current.drawable.GetType() == typeof(BezierCurve))
                {
                    BezierCurve b = current.drawable as BezierCurve;
                    if (b.handling == "n")
                    {
                        if (Drawables.CircleContains((Vector2i)b.starthandle, 12, Mouse.GetPosition(window)))
                        {
                            b.handling = "s";
                        }
                        else if (Drawables.CircleContains((Vector2i)b.endhandle, 12, Mouse.GetPosition(window)))
                        {
                            b.handling = "e";
                        }
                        else
                        {
                            b.handling       = "";
                            current.drawable = b;
                            sprites.Add(current.drawable);
                            current.drawable = null;
                            return;
                        }
                    }
                    else
                    {
                        b.handling = "n";
                    }
                    current.drawable = b;
                    return;
                }
                sprites.Add(current.drawable);
                current.drawable = null;
            }
        }