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);
        }
Example #2
0
        public void ZoomAuto(double gridHeight, double gridWidth, double WinHeight, double WinWidth)
        {
            if (_child != null)
            {
                double hauteurVu;
                double largeurVu;
                double hauteurUtil;
                double largeurUtil;
                double scaleY;
                double scaleX;
                double scale;

                DrawEntities.CalcMaxDimDoc();
                if (DrawEntities.dimDoc.maxY == double.MinValue || DrawEntities.dimDoc.maxX == double.MinValue)
                {
                    return;
                }
                hauteurVu = Math.Abs(DrawEntities.dimDoc.maxY - DrawEntities.dimDoc.minY);
                largeurVu = Math.Abs(DrawEntities.dimDoc.maxX - DrawEntities.dimDoc.minX);

                scaleY = (WinHeight) / (hauteurVu);
                scaleX = WinWidth / (largeurVu);

                scale = Math.Min(scaleY, scaleX);
                scale = Scale;// 修改比例

                if (scale == 0)
                {
                    scale     = 1.0;
                    hauteurVu = 462;
                }

                hauteurUtil = WinHeight - hauteurVu * scale;
                largeurUtil = WinWidth - largeurVu * scale;

                var tt = GetTranslateTransform(_child);

                tt.X = -gridWidth * scale / 2 - DrawEntities.dimDoc.minX * scale;
                tt.Y = -(gridHeight * scale) / 2 - 250 * scale + (WinHeight) + DrawEntities.dimDoc.minY * scale;

                var st = GetScaleTransform(_child);

                st.ScaleX = Math.Abs(scale);
                st.ScaleY = Math.Abs(scale);
            }
        }
Example #3
0
        public void Reset(double gridHeight, double gridWidth, bool init, double ViewHeight, double ViewWidth, double WinHeight, double WinWidth)
        {
            if (_child != null)
            {
                double hauteurVu;
                double largeurVu;
                double scaleY;
                double scaleX;
                double scale;

                DrawEntities.CalcMaxDimDoc();



                if (init == true)
                {
                    hauteurVu = ViewHeight;
                    largeurVu = ViewWidth;

                    if (hauteurVu == 0.0)
                    {
                        hauteurVu = 462;
                    }
                    if (largeurVu == 0.0)
                    {
                        largeurVu = 500;
                    }
                }
                else
                {
                    hauteurVu = DrawEntities.dimDoc.maxY - DrawEntities.dimDoc.minY;
                    largeurVu = DrawEntities.dimDoc.maxX - DrawEntities.dimDoc.minX;
                }

                scaleY = ViewHeight / hauteurVu;
                scaleX = ViewWidth / largeurVu;
                scale  = Math.Min(scaleY, scaleX);
                if (scale == 0)
                {
                    scale = 1.0;
                }
                var st = GetScaleTransform(_child);

                st.ScaleX = scale;
                st.ScaleY = scale;
                var tt = GetTranslateTransform(_child);

                if (WinHeight == 0)
                {
                    WinHeight = ViewHeight;
                }
                if (WinWidth == 0)
                {
                    WinWidth = ViewWidth;
                }

                if (init == true)
                {
                    tt.X = -gridWidth * scale / 2;
                    tt.Y = -gridHeight * scale / 2;
                }
                else
                {
                    tt.X = -gridWidth * scale / 2 - DrawEntities.dimDoc.minX * scale;
                    tt.Y = -gridHeight * scale / 2 - (WinHeight * scale) / 2 + hauteurVu * scale + DrawEntities.dimDoc.minY * scale;
                }
            }
        }