Example #1
0
        private void On_CellClick(object sender, GridCellMouseEventArgs e)
        {
            // test if color
            if (e.GridColumn is null)
            {
                return;
            }
            if (e.GridColumn.HeaderText == "Color")
            {
                var model = e.Item as ParticleConduitModel;

                // Native
                var color = model.Color;
                Dialogs.ShowColorDialog(ref color);
                model.Color = color;

                // Eto
                // TODO: implement
            }

            // test if image
            if (e.GridColumn.HeaderText == "Image")
            {
                var model = e.Item as ParticleConduitModel;
                // Allow the user to select a bitmap file
                var fd = new Rhino.UI.OpenFileDialog {
                    Filter = "Image Files (*.bmp;*.png;*.jpg)|*.bmp;*.png;*.jpg"
                };
                if (!fd.ShowOpenDialog())
                {
                    return;
                }

                // Verify the file that was selected
                System.Drawing.Image image;
                try
                {
                    image = System.Drawing.Image.FromFile(fd.FileName);
                }
                catch (Exception)
                {
                    return;
                }

                model.Bitmap = new System.Drawing.Bitmap(image);
            }
        }
    public static Rhino.Commands.Result AddBackgroundBitmap(Rhino.RhinoDoc doc)
    {
        // Allow the user to select a bitmap file
        var fd = new Rhino.UI.OpenFileDialog {
            Filter = "Image Files (*.bmp;*.png;*.jpg)|*.bmp;*.png;*.jpg"
        };

        if (!fd.ShowOpenDialog())
        {
            return(Rhino.Commands.Result.Cancel);
        }

        // Verify the file that was selected
        System.Drawing.Image image;
        try
        {
            image = System.Drawing.Image.FromFile(fd.FileName);
        }
        catch (Exception)
        {
            return(Rhino.Commands.Result.Failure);
        }

        // Allow the user to pick the bitmap origin
        var gp = new Rhino.Input.Custom.GetPoint();

        gp.SetCommandPrompt("Bitmap Origin");
        gp.ConstrainToConstructionPlane(true);
        gp.Get();
        if (gp.CommandResult() != Rhino.Commands.Result.Success)
        {
            return(gp.CommandResult());
        }

        // Get the view that the point was picked in.
        // This will be the view that the bitmap appears in.
        var view = gp.View();

        if (view == null)
        {
            view = doc.Views.ActiveView;
            if (view == null)
            {
                return(Rhino.Commands.Result.Failure);
            }
        }

        // Allow the user to specify the bitmap width in model units
        var gn = new Rhino.Input.Custom.GetNumber();

        gn.SetCommandPrompt("Bitmap width");
        gn.SetLowerLimit(1.0, false);
        gn.Get();
        if (gn.CommandResult() != Rhino.Commands.Result.Success)
        {
            return(gn.CommandResult());
        }

        // Cook up some scale factors
        var w            = gn.Number();
        var image_width  = image.Width;
        var image_height = image.Height;
        var h            = w * (image_height / image_width);

        var plane = view.ActiveViewport.ConstructionPlane();

        plane.Origin = gp.Point();
        view.ActiveViewport.SetTraceImage(fd.FileName, plane, w, h, false, false);
        view.Redraw();
        return(Rhino.Commands.Result.Success);
    }