예제 #1
0
        public static Bitmap CreateViewportConfigurationBitmap(
            DxfModel model,
            string vportName,
            GraphicsConfig graphicsConfig,
            SmoothingMode smoothingMode,
            int width,
            int height)
        {
            Bitmap      bitmap          = new Bitmap(width, height);
            Rectangle2D targetRectangle = new Rectangle2D(0.0, 0.0, (double)width, (double)height);
            Rectangle   drawingBounds   = new Rectangle(0, 0, width, height);

            using (Graphics graphics = Graphics.FromImage((Image)bitmap))
            {
                graphics.SmoothingMode = smoothingMode;
                graphics.Clear((System.Drawing.Color)graphicsConfig.BackColor);
                GDIGraphics3D gdiGraphics3D = new GDIGraphics3D(graphicsConfig);
                gdiGraphics3D.CreateDrawables(model);
                foreach (DxfVPort vport in (DxfHandledObjectCollection <DxfVPort>)model.VPorts)
                {
                    if (vportName.Equals(vport.Name, StringComparison.InvariantCultureIgnoreCase))
                    {
                        IViewDescription viewDescription = vport.ViewDescription;
                        Matrix4D         transform       = ViewUtil.GetTransform(viewDescription, targetRectangle, true);
                        float            num             = 1f - (float)(viewDescription.ViewportCenter.Y + viewDescription.ViewportHeight / 2.0);
                        RectangleF       rect            = new RectangleF((float)width * (float)(viewDescription.ViewportCenter.X - viewDescription.ViewportWidth / 2.0), (float)height * num, (float)width * (float)viewDescription.ViewportWidth, (float)height * (float)viewDescription.ViewportHeight);
                        graphics.Clip = new System.Drawing.Region(rect);
                        gdiGraphics3D.Draw(graphics, drawingBounds, transform);
                    }
                }
            }
            return(bitmap);
        }
예제 #2
0
 public Matrix4D GetMappingTransform(Rectangle2D targetRectangle, bool invertY)
 {
     return(ViewUtil.GetTransform(this.ViewDescription, targetRectangle, invertY));
 }