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); }
public Matrix4D GetMappingTransform(Rectangle2D targetRectangle, bool invertY) { return(ViewUtil.GetTransform(this.ViewDescription, targetRectangle, invertY)); }