示例#1
0
        ///<summary> This gets called when when the user runs this command.</summary>
        public override IRhinoCommand.result RunCommand(IRhinoCommandContext context)
        {
            MRhinoView view = RhUtil.RhinoApp().ActiveView();

            if (view == null)
            {
                return(IRhinoCommand.result.nothing);
            }

            MRhinoGetOption go = new MRhinoGetOption();

            go.SetCommandPrompt("Capture Method");
            go.SetCommandPromptDefault("ViewCapture");
            int viewcap   = go.AddCommandOption(new MRhinoCommandOptionName("ViewCapture"));
            int screencap = go.AddCommandOption(new MRhinoCommandOptionName("ScreenCapture"));

            go.GetOption();
            if (go.CommandResult() != IRhinoCommand.result.success)
            {
                return(go.CommandResult());
            }

            System.Drawing.Bitmap bmp = null;

            if (go.Option().m_option_index == viewcap)
            {
                MRhinoDisplayPipeline pipeline = view.DisplayPipeline();
                int left = 0, right = 0, bot = 0, top = 0;
                view.MainViewport().VP().GetScreenPort(ref left, ref right, ref bot, ref top);
                int w = right - left;
                int h = bot - top;
                bmp = new System.Drawing.Bitmap(w, h);
                System.Drawing.Graphics    g    = System.Drawing.Graphics.FromImage(bmp);
                MDisplayPipelineAttributes attr = new MDisplayPipelineAttributes(pipeline.DisplayAttrs());
                bool rc = pipeline.DrawToDC(g, w, h, attr);
                g.Dispose();
                if (!rc)
                {
                    bmp = null;
                }
            }
            else
            {
                bmp = new System.Drawing.Bitmap(1, 1);
                bool rc = view.ScreenCaptureToBitmap(ref bmp, true, false);
                if (!rc)
                {
                    bmp = null;
                }
            }

            if (bmp != null)
            {
                string mydir = System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments);
                string path  = System.IO.Path.Combine(mydir, "capture.png");
                bmp.Save(path);
                return(IRhinoCommand.result.success);
            }

            return(IRhinoCommand.result.failure);
        }