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