Example #1
0
        private void MenuItemTalleta_Click(object sender, RoutedEventArgs e)
        {
            string tiedostonnimi;

            System.Windows.Forms.SaveFileDialog dlg = new System.Windows.Forms.SaveFileDialog();
            // Set filter for file extension and default file extension
            dlg.DefaultExt = ".xml";
            dlg.Filter     = "XML-tiedosto (.xml)|*.xml";
            // Display OpenFileDialog by calling ShowDialog method
            System.Windows.Forms.DialogResult result = dlg.ShowDialog();
            // Get the selected file name and display in a TextBox
            if (result == System.Windows.Forms.DialogResult.OK)
            {
                tiedostonnimi = dlg.FileName;
                this.Title    = tiedostonnimi;
            }
            else
            {
                return;//ei tehdän mitään
            }

            XDocument xdoc = new XDocument();

            XElement xeRoot    = new XElement("Data");
            XElement xeSubRoot = new XElement("Rows");

            foreach (var item in piirustukset)
            {
                Piirros pii = (Piirros)item;

                XElement xRow = new XElement("Row");
                xRow.Add(new XElement("Muoto", pii.Muoto));
                xRow.Add(new XElement("X", pii.X));
                xRow.Add(new XElement("Y", pii.Y));
                xRow.Add(new XElement("X2", pii.X2));
                xRow.Add(new XElement("Y2", pii.Y2));
                xRow.Add(new XElement("Width", pii.Width));
                xRow.Add(new XElement("Height", pii.Height));
                xRow.Add(new XElement("R", pii.R));
                xRow.Add(new XElement("G", pii.G));
                xRow.Add(new XElement("B", pii.B));
                xRow.Add(new XElement("A", pii.A));
                xRow.Add(new XElement("StrokeThickness", pii.StrokeThikness));
                xRow.Add(new XElement("Fill", pii.Fill));
                xeSubRoot.Add(xRow);
            }
            xeRoot.Add(xeSubRoot);
            xdoc.Add(xeRoot);

            xdoc.Save(tiedostonnimi);
        }
        private void GridPiirto_MouseMove(object sender, MouseEventArgs e)
        {
            if (piirtotila)
            {
                switch (muoto)
                {
                case 1:
                    Line viiva = new Line();
                    viiva.StrokeThickness = paksuus;
                    viiva.Stroke          = sivellin;
                    viiva.X1 = x;
                    viiva.Y1 = y;
                    viiva.X2 = e.GetPosition(this.GridPiirto).X;
                    viiva.Y2 = e.GetPosition(this.GridPiirto).Y;
                    this.GridPiirto.Children.Add(viiva);
                    piirros                 = new Piirros;
                    piirros.Muoto           = 1;
                    piirros.R               = vari.R;
                    piirros.G               = vari.G;
                    piirros.B               = vari.B;
                    piirros.A               = vari.A;
                    piirros.StrokeThickness = paksuus;
                    piirros.X               = x;
                    piirros.Y               = y;
                    piirros.X2              = e.GetPosition(this.GridPiirto).X;
                    piirros.Y2              = e.GetPosition(this.GridPiirto).Y;
                    piirros.Fill            = false;
                    piirustukset.Add(piirros);
                    x = e.GetPosition(this.GridPiirto).X;
                    y = e.GetPosition(this.GridPiirto).Y;
                    break;

                case 2:
                    if (ellipsi == null)
                    {
                        ellipsi        = new Ellipse();
                        ellipsi.Stroke = sivellin;
                        ellipsi.HorizontalAlignment = HorizontalAlignment.Left;
                        ellipsi.VerticalAlignment   = VerticalAlignment.Top;
                        ellipsi.StrokeThickness     = paksuus;
                    }
                    if (x > e.GetPosition(this.GridPiirto).X)
                    {
                        if (y > e.GetPosition(this.GridPiirto).Y)
                        {
                            ellipsi.Margin = new Thickness(e.GetPosition(this.GridPiirto).X, e.GetPosition(this.GridPiirto).Y, 0, 0);
                        }
                        else
                        {
                            ellipsi.Margin = new Thickness(e.GetPosition(this.GridPiirto).X, y, 0, 0);
                        }
                    }
                    else
                    {
                        if (y > e.GetPosition(this.GridPiirto).Y)
                        {
                            ellipsi.Margin = new Thickness(x, e.GetPosition(this.GridPiirto).Y, 0, 0);
                        }
                        else
                        {
                            ellipsi.Margin = new Thickness(x, y, 0, 0);
                        }
                    }
                    ellipsi.Width  = Math.Abs(x - e.GetPosition(this.GridPiirto).X);
                    ellipsi.Height = Math.Abs(y - e.GetPosition(this.GridPiirto).Y);
                    try
                    {
                        this.GridPiirto.Children.Add(ellipsi);
                    }
                    catch { }
                    break;

                case 3:
                    if (suorakaide == null)
                    {
                        suorakaide        = new Rectangle();
                        suorakaide.Stroke = sivellin;
                        suorakaide.HorizontalAlignment = HorizontalAlignment.Left;
                        suorakaide.VerticalAlignment   = VerticalAlignment.Top;
                        suorakaide.StrokeThickness     = paksuus;
                    }
                    if (x > e.GetPosition(this.GridPiirto).X)
                    {
                        if (y > e.GetPosition(this.GridPiirto).Y)
                        {
                            suorakaide.Margin = new Thickness(e.GetPosition(this.GridPiirto).X, e.GetPosition(this.GridPiirto).Y, 0, 0);
                        }
                        else
                        {
                            suorakaide.Margin = new Thickness(e.GetPosition(this.GridPiirto).X, y, 0, 0);
                        }
                    }
                    else
                    {
                        if (y > e.GetPosition(this.GridPiirto).Y)
                        {
                            suorakaide.Margin = new Thickness(x, e.GetPosition(this.GridPiirto).Y, 0, 0);
                        }
                        else
                        {
                            suorakaide.Margin = new Thickness(x, y, 0, 0);
                        }
                    }
                    suorakaide.Width  = Math.Abs(x - e.GetPosition(this.GridPiirto).X);
                    suorakaide.Height = Math.Abs(y - e.GetPosition(this.GridPiirto).Y);
                    try
                    {
                        this.GridPiirto.Children.Add(suorakaide);
                    }
                    catch { }
                    break;

                case 4:
                    ellipsi        = new Ellipse();
                    ellipsi.Stroke = sivellin;
                    ellipsi.HorizontalAlignment = HorizontalAlignment.Left;
                    ellipsi.VerticalAlignment   = VerticalAlignment.Top;
                    ellipsi.StrokeThickness     = paksuus;

                    if (x > e.GetPosition(this.GridPiirto).X)
                    {
                        if (y > e.GetPosition(this.GridPiirto).Y)
                        {
                            ellipsi.Margin = new Thickness(e.GetPosition(this.GridPiirto).X, e.GetPosition(this.GridPiirto).Y, 0, 0);
                        }
                        else
                        {
                            ellipsi.Margin = new Thickness(e.GetPosition(this.GridPiirto).X, y, 0, 0);
                        }
                    }
                    else
                    {
                        if (y > e.GetPosition(this.GridPiirto).Y)
                        {
                            ellipsi.Margin = new Thickness(x, e.GetPosition(this.GridPiirto).Y, 0, 0);
                        }
                        else
                        {
                            ellipsi.Margin = new Thickness(x, y, 0, 0);
                        }
                    }
                    ellipsi.Width  = Math.Abs(x - e.GetPosition(this.GridPiirto).X);
                    ellipsi.Height = Math.Abs(y - e.GetPosition(this.GridPiirto).Y);
                    this.GridPiirto.Children.Add(ellipsi);
                    piirros                 = new Piirros();
                    piirros.Muoto           = 4;
                    piirros.R               = vari.R;
                    piirros.G               = vari.G;
                    piirros.B               = vari.B;
                    piirros.A               = vari.A;
                    piirros.StrokeThickness = paksuus;
                    piirros.X               = x;
                    piirros.Y               = y;
                    piirros.Width           = ellipsi.Width;
                    piirros.Height          = ellipsi.Height;
                    piirros.Fill            = false;
                    piirustukset.Add(piirros);
                    break;

                case 5:
                    if (ellipsi == null)
                    {
                        ellipsi        = new Ellipse();
                        ellipsi.Stroke = sivellin;
                        ellipsi.Fill   = sivellin;
                        ellipsi.HorizontalAlignment = HorizontalAlignment.Left;
                        ellipsi.VerticalAlignment   = VerticalAlignment.Top;
                        ellipsi.StrokeThickness     = paksuus;
                    }
                    if (x > e.GetPosition(this.GridPiirto).X)
                    {
                        if (y > e.GetPosition(this.GridPiirto).Y)
                        {
                            ellipsi.Margin = new Thickness(e.GetPosition(this.GridPiirto).X, e.GetPosition(this.GridPiirto).Y, 0, 0);
                        }
                        else
                        {
                            ellipsi.Margin = new Thickness(e.GetPosition(this.GridPiirto).X, y, 0, 0);
                        }
                    }
                    else
                    {
                        if (y > e.GetPosition(this.GridPiirto).Y)
                        {
                            ellipsi.Margin = new Thickness(x, e.GetPosition(this.GridPiirto).Y, 0, 0);
                        }
                        else
                        {
                            ellipsi.Margin = new Thickness(x, y, 0, 0);
                        }
                    }
                    ellipsi.Width  = Math.Abs(x - e.GetPosition(this.GridPiirto).X);
                    ellipsi.Height = Math.Abs(x - e.GetPosition(this.GridPiirto).Y);
                    try
                    {
                        this.GridPiirto.Children.Add(ellipsi);
                    }
                    catch { }
                    break;
                }
            }
        }
        private void GridPiirto_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            switch (muoto)
            {
            case 2:
                piirros                 = new Piirros();
                piirros.Muoto           = 2;
                piirros.R               = vari.R;
                piirros.G               = vari.G;
                piirros.B               = vari.B;
                piirros.A               = vari.A;
                piirros.StrokeThickness = paksuus;
                piirros.X               = x;
                piirros.Y               = y;
                piirros.Width           = ellipsi.Width;
                piirros.Height          = ellipsi.Height;
                piirros.Fill            = false;
                piirustukset.Add(piirros);
                //this.GridPiirto.Children.Add(ellipsi);
                ellipsi = null;
                break;

            case 3:
                piirros                 = new Piirros();
                piirros.Muoto           = 3;
                piirros.R               = vari.R;
                piirros.G               = vari.G;
                piirros.B               = vari.B;
                piirros.A               = vari.A;
                piirros.StrokeThickness = paksuus;
                piirros.X               = x;
                piirros.Y               = y;
                piirros.Width           = suorakaide.Width;
                piirros.Height          = suorakaide.Height;
                piirros.Fill            = false;
                piirustukset.Add(piirros);
                //this.GridPiirto.Children.Add(suorakaide);
                suorakaide = null;
                break;

            case 4:
                break;

            case 5:
                piirros                 = new Piirros();
                piirros.Muoto           = 5;
                piirros.R               = vari.R;
                piirros.G               = vari.G;
                piirros.B               = vari.B;
                piirros.A               = vari.A;
                piirros.StrokeThickness = paksuus;
                piirros.X               = x;
                piirros.Y               = y;
                piirros.Width           = ellipsi.Width;
                piirros.Height          = ellipsi.Height;
                piirros.Fill            = true;
                piirustukset.Add(piirros);
                //this.GridPiirto.Children.Add(ellipsi);
                ellipsi = null;
                break;
            }
            piirtotila = false;
        }
Example #4
0
        private void GridPiirto_MouseMove(object sender, MouseEventArgs e)
        {
            if (piirtotila)
            {
                switch (muoto)
                {
                case 1:
                    Line viiva = new Line();         //uusi viiva
                    viiva.StrokeThickness = paksuus; //viiva paksuus
                    paksuus      = 6;
                    viiva.Stroke = sivellin;
                    viiva.X1     = x;                                //viivan alkupisteen x-koordinaatti
                    viiva.Y1     = y;                                //viivan alkupisteen y-koordinaatti
                    viiva.X2     = e.GetPosition(this.GridPiirto).X; //viivan loppupisteen x-koordinaatti
                    viiva.Y2     = e.GetPosition(this.GridPiirto).Y; //viivan loppupisteen y-koordinaatti
                    this.GridPiirto.Children.Add(viiva);             //lisätään viiva Gridin Children-kokoelmaan
                                                                     //siis ikkunaan
                                                                     //hiiren koordinaatti talten
                                                                     //Aqui empieza a funcionar PIIRROS
                    piirros = new Piirros();

                    piirros.Muoto          = 1;
                    piirros.R              = vari.R;
                    piirros.G              = vari.G;
                    piirros.B              = vari.B;
                    piirros.A              = vari.A;
                    piirros.StrokeThikness = paksuus;
                    piirros.X              = x;
                    piirros.Y              = y;
                    piirros.X2             = e.GetPosition(this.GridPiirto).X;
                    piirros.Y2             = e.GetPosition(this.GridPiirto).Y;
                    piirros.Fill           = 0;
                    piirustukset.Add(piirros);
                    x = e.GetPosition(this.GridPiirto).X;
                    y = e.GetPosition(this.GridPiirto).Y;

                    break;

                case 2:
                    if (ellipsi == null)
                    {
                        ellipsi        = new Ellipse();
                        ellipsi.Stroke = sivellin;
                        ellipsi.HorizontalAlignment = HorizontalAlignment.Left;
                        ellipsi.VerticalAlignment   = VerticalAlignment.Top;
                        ellipsi.StrokeThickness     = paksuus;
                    }
                    if (x > e.GetPosition(this.GridPiirto).X)
                    {
                        if (y > e.GetPosition(this.GridPiirto).Y)
                        {
                            ellipsi.Margin = new Thickness(e.GetPosition(this.GridPiirto).X, e.GetPosition(this.GridPiirto).Y, 0, 0);
                        }
                        else
                        {
                            ellipsi.Margin = new Thickness(e.GetPosition(this.GridPiirto).X, y, 0, 0);
                        }
                    }
                    else
                    {
                        if (y > e.GetPosition(this.GridPiirto).Y)
                        {
                            ellipsi.Margin = new Thickness(x, e.GetPosition(this.GridPiirto).Y, 0, 0);
                        }
                        else
                        {
                            ellipsi.Margin = new Thickness(x, y, 0, 0);
                        }
                    }

                    ellipsi.Width  = Math.Abs(x - e.GetPosition(this.GridPiirto).X);
                    ellipsi.Height = Math.Abs(y - e.GetPosition(this.GridPiirto).Y);
                    try
                    {
                        this.GridPiirto.Children.Add(ellipsi);
                    }
                    catch { }
                    break;

                case 3:
                    if (suorakaide == null)
                    {
                        suorakaide        = new Rectangle();
                        suorakaide.Stroke = sivellin;
                        suorakaide.HorizontalAlignment = HorizontalAlignment.Left;
                        suorakaide.VerticalAlignment   = VerticalAlignment.Top;
                        suorakaide.StrokeThickness     = paksuus;
                    }
                    if (x > e.GetPosition(this.GridPiirto).X)
                    {
                        if (y > e.GetPosition(this.GridPiirto).Y)
                        {
                            suorakaide.Margin = new Thickness(e.GetPosition(this.GridPiirto).X, e.GetPosition(this.GridPiirto).Y, 0, 0);
                        }
                        else
                        {
                            suorakaide.Margin = new Thickness(x, y, 0, 0);
                        }
                    }
                    suorakaide.Width  = Math.Abs(x - e.GetPosition(this.GridPiirto).X);
                    suorakaide.Height = Math.Abs(y - e.GetPosition(this.GridPiirto).Y);
                    try
                    {
                        this.GridPiirto.Children.Add(suorakaide);
                    }
                    catch { }
                    break;

                case 4:
                    ellipsi        = new Ellipse();
                    ellipsi.Stroke = sivellin;
                    ellipsi.HorizontalAlignment = HorizontalAlignment.Left;
                    ellipsi.VerticalAlignment   = VerticalAlignment.Top;
                    ellipsi.StrokeThickness     = paksuus;

                    if (x > e.GetPosition(this.GridPiirto).X)
                    {
                        if (y > e.GetPosition(this.GridPiirto).Y)
                        {
                            ellipsi.Margin = new Thickness(e.GetPosition(this.GridPiirto).X, e.GetPosition(this.GridPiirto).Y, 0, 0);
                        }
                        else
                        {
                            ellipsi.Margin = new Thickness(e.GetPosition(this.GridPiirto).X, y, 0, 0);
                        }
                    }
                    else
                    {
                        if (y > e.GetPosition(this.GridPiirto).Y)
                        {
                            ellipsi.Margin = new Thickness(x, e.GetPosition(this.GridPiirto).Y, 0, 0);
                        }
                        else
                        {
                            ellipsi.Margin = new Thickness(x, y, 0, 0);
                        }
                    }
                    ellipsi.Width  = Math.Abs(x - e.GetPosition(this.GridPiirto).X);
                    ellipsi.Height = Math.Abs(y - e.GetPosition(this.GridPiirto).Y);
                    this.GridPiirto.Children.Add(ellipsi);
                    /*-----------------------------------------*/
                    piirros = new Piirros();

                    piirros.Muoto          = 4;
                    piirros.R              = vari.R;
                    piirros.G              = vari.G;
                    piirros.B              = vari.B;
                    piirros.A              = vari.A;
                    piirros.StrokeThikness = paksuus;
                    piirros.X              = x;
                    piirros.Y              = y;
                    piirros.Width          = ellipsi.Width;
                    piirros.Height         = ellipsi.Height;
                    piirros.Fill           = 0;
                    piirustukset.Add(piirros);
                    break;

                case 5:
                    if (ellipsi == null)
                    {
                        ellipsi        = new Ellipse();
                        ellipsi.Stroke = sivellin;
                        ellipsi.Fill   = sivellin;
                        ellipsi.HorizontalAlignment = HorizontalAlignment.Left;
                        ellipsi.VerticalAlignment   = VerticalAlignment.Top;
                        ellipsi.StrokeThickness     = paksuus;
                    }
                    if (x > e.GetPosition(this.GridPiirto).X)
                    {
                        if (y > e.GetPosition(this.GridPiirto).Y)
                        {
                            ellipsi.Margin = new Thickness(e.GetPosition(this.GridPiirto).X, e.GetPosition(this.GridPiirto).Y, 0, 0);
                        }
                        else
                        {
                            ellipsi.Margin = new Thickness(e.GetPosition(this.GridPiirto).X, y, 0, 0);
                        }
                    }
                    else
                    {
                        if (y > e.GetPosition(this.GridPiirto).Y)
                        {
                            ellipsi.Margin = new Thickness(x, e.GetPosition(this.GridPiirto).Y, 0, 0);
                        }
                        else
                        {
                            ellipsi.Margin = new Thickness(x, y, 0, 0);
                        }
                    }
                    ellipsi.Width  = Math.Abs(x - e.GetPosition(this.GridPiirto).X);
                    ellipsi.Height = Math.Abs(y - e.GetPosition(this.GridPiirto).Y);
                    try
                    {
                        this.GridPiirto.Children.Add(ellipsi);
                    }
                    catch { }
                    break;
                }
            }
        }