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); }