Есть ли способ сохранить визуал UserControl, содержащий диаграмму, в виде файла векторной графики? - PullRequest
1 голос
/ 30 мая 2019

Мне нужно сохранить диаграмму, созданную в пользовательском элементе управления WPF, в формате файла векторной графики.

До сих пор я пытался получить UIElement (пользовательский элемент управления), содержащий диаграмму,и сохраните его как файл .wmf.Я знаю, что WPF отображает пользовательские элементы управления в формате векторной графики, поэтому кажется, что сохранение этого файла должно быть очень простым.В любом случае, кажется, что я могу взять пользовательский элемент управления, но не вижу, что находится внутри, я пытался поместить его на холст, но, похоже, это не работает.Я попытался использовать холст, потому что мне уже удалось сохранить файл .wmf из дочерних фигур на холсте.

    private void InterceptChart()
    {
        TChartCanvas.Children.Add(new VisualHost { Visual=chart1});

    }
    public class VisualHost : UIElement
    {
        public Visual Visual { get; set; }
        protected override int VisualChildrenCount
        {
            get { return Visual != null ? 1 : 0; }
        }
        protected override Visual GetVisualChild(int index)
        {
            return Visual;
        }
    }
   public void Export(string filePath, Canvas MyCanvas)
    {

        int w = Convert.ToInt32(this.MyCanvas.Width);
        int h = Convert.ToInt32(this.MyCanvas.Height);
        System.Drawing.RectangleF rect = new System.Drawing.RectangleF(0, 0, w, h);
        Bitmap bmp = new Bitmap(16, 16);
        Graphics gs = Graphics.FromImage(bmp);
        Metafile mf = new Metafile(filePath, gs.GetHdc(), rect, MetafileFrameUnit.Pixel);
        Graphics g = Graphics.FromImage(mf);
        WPFPainter painter = new WPFPainter(g, MyCanvas);
        painter.Draw(); //painter takes the child shapes from the canvas and draws them using System.Drawing.Graphics
        g.Save();
        g.Dispose();
        mf.Dispose();
    }

Я действительно надеюсь, что есть способ сделать это, потому что использование растрового формата длясохранение этих диаграмм сделало бы их бесполезными, и я не могу позволить себе переписать все классы, связанные с графикой, но, возможно, я подхожу к этому неправильно, если так, я был бы признателен, если бы вы могли указать мне направильное направление.Ура! * * 1006

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...