public static RenderTargetBitmap GetImage(Canvas canvas, double scale = 1.0, bool avecFond = false) { DrawEntities.CalcMaxDimDoc(); DimMax dim = DrawEntities.dimDoc; Size size = new Size(dim.Width(), dim.Height()); //Size size = new Size(1000, 1000); //System.Windows.Point p0 = new System.Windows.Point(0,-200); System.Windows.Point p0 = new System.Windows.Point(dim.minX, dim.minY); if (size.IsEmpty) { return(null); } //RenderTargetBitmap result = new RenderTargetBitmap((int)size.Width*2, (int)size.Height*2, 96*2, 96*2, PixelFormats.Pbgra32); RenderTargetBitmap result = new RenderTargetBitmap((int)(size.Width * scale), (int)(size.Height * scale), 96 * scale, 96 * scale, PixelFormats.Default); DrawingVisual drawingvisual = new DrawingVisual(); using (DrawingContext context = drawingvisual.RenderOpen()) { if (avecFond) { context.DrawRectangle(Brushes.White, null, new Rect(p0, size)); } context.DrawRectangle(new VisualBrush(canvas), null, new Rect(p0, size)); context.Close(); } result.Render(drawingvisual); return(result); }
/*public static void initMaxPt() * { * maxX=Double.MinValue; * minX=Double.MaxValue; * maxY=Double.MinValue; * minY=Double.MaxValue; * }*/ public static Vector2 getBlockCenter() { DimMax dim = GetLastMaxDim(); Vector2 v1 = new Vector2(dim.minX, dim.minY); Vector2 v2 = new Vector2(dim.maxX, dim.maxY); Vector2 vres = (v1 + v2) / 2; return(vres); }
/*Draw Insert*/ public static void DrawInsert(Insert xInsert, Canvas mainCanvas) { xInsert.Block.Layer = xInsert.Layer; Canvas canvas1 = new Canvas(); AddNewMaxDim(); canvas1 = GetBlock(xInsert.Block, xInsert.Color, xInsert.Lineweight); DimMax dim = GetLastMaxDim(); mainCanvas.Children.Add(canvas1); double x1, x2, y1, y2; Vector2 vCenter = getBlockCenter(); x1 = dim.maxX * xInsert.Scale.X + xInsert.Position.X; y1 = dim.maxY * xInsert.Scale.Y + xInsert.Position.Y; x2 = dim.minX * xInsert.Scale.X + xInsert.Position.X; y2 = dim.minY * xInsert.Scale.Y + xInsert.Position.Y; dim.maxX = Math.Max(x1, x2); dim.minX = Math.Min(x1, x2); dim.maxY = Math.Max(y1, y2); dim.minY = Math.Min(y1, y2); Canvas.SetLeft(canvas1, xInsert.Position.X); //if (xInsert.Scale.X < 0) Canvas.SetLeft(canvas1, dim.maxX); Canvas.SetTop(canvas1, mainCanvas.Height - (xInsert.Position.Y + canvas1.Height)); //if (xInsert.Scale.Y < 0) Canvas.SetTop(canvas1, mainCanvas.Height - (dim.maxY));; TransformGroup trgr = new TransformGroup(); canvas1.RenderTransform = trgr; if (xInsert.Rotation != 0.0) { trgr.Children.Add(new RotateTransform(xInsert.Rotation, 0, 0)); } if ((xInsert.Scale.X != 1.0 || xInsert.Scale.Y != 1.0) && xInsert.Scale.X != 0 && xInsert.Scale.Y != 0) { trgr.Children.Add(new ScaleTransform(xInsert.Scale.X, xInsert.Scale.Y, 0, 0)); } foreach (netDxf.Entities.Attribute xAttrib in xInsert.Attributes) { xAttrib.Layer = xInsert.Layer; DrawAttribute(xAttrib, mainCanvas); } }
public static void getMaxPt(System.Windows.Point pt) { DimMax dim = GetLastMaxDim(); if (dim != null) { if (pt.X > dim.maxX) { dim.maxX = pt.X; } if (pt.Y > dim.maxY) { dim.maxY = pt.Y; } if (pt.X < dim.minX) { dim.minX = pt.X; } if (pt.Y < dim.minY) { dim.minY = pt.Y; } } }
public static void AddNewMaxDim() { DimMax newDim = new DimMax(); listDim.Add(newDim); }