2015-06-23 9 views
2

Я использую OxyPlot для экспорта графиков.
Добавить нижний колонтитул к экспортированному графику OxyPlot

Когда я экспортировать их, я хочу, чтобы добавить колонтитул этих участков с информацией, как на пути он сохранен, отметкой времени, и так далее ...
Прямо сейчас я делаю это, создавая дополнительную ось X на другом уровне позиции, а затем установить размеры всех тиков и меток на ноль, за исключением размера шрифта заголовка.

Это работает, но, как вы можете себе представить, это довольно хаки и не выглядит так хорошо (как вы не можете установить, например, выравнивание).

Так что мой вопрос в том, есть ли возможность добавить такой нижний колонтитул на экспортируемый участок?

EDIT:

var xAxis = new OxyPlot.Axes.LinearAxis 
{ 
    Position = AxisPosition.Bottom, 
    PositionTier = 1, 
    Title = "Footer: i.e. path to my file", 
    MinorTickSize = 0.0, 
    MajorTickSize = 0.0, 
    FontSize = 0.0, 
    TitleFontSize = 12, 
    AxisDistance = 10 
}; 

Это обходной путь я упомянул.
Я создаю ось на уровне позиции 1, которая ниже первой, а затем отключает все визуальные эффекты, кроме названия.
И, в конце концов, я добавляю его в свой plotmodel pm.Axes.Add(xAxis).

Чтобы экспортировать свое plotmodel Я использую PdfExporter так:

using (var stream = File.Create(testFile.pdf)) 
{ 
    PdfExporter.Export(pm, stream, 800, 500); 
} 

Приветствие
Chriz

+0

Если бы вы могли добавить наименьший возможный образец кода, чтобы продемонстрировать эту проблему, было бы намного проще для других пользователей, чтобы помочь вам. Некоторые могут даже взять ваш пример и скопировать/вставить его в свою среду IDE, чтобы найти решение, но это намного проще, если вы дадите им прочную отправную точку. – user700390

+0

Извините, вы правы. Я добавил пример кода, чтобы кто-то смог воспроизвести проблему. Поскольку я новичок в StackOverflow, не стесняйтесь говорить мне, если я пропустил anyhing в моем вопросе. – Chriz

ответ

0

Просто должен был сделать то же самое с моим проектом, и думал, что я разделю, как мне это удалось для тех, кто нуждается в нижнем колонтитуле.

Я не смог найти встроенные методы OxyPlot для добавления верхнего или нижнего колонтитула, но если вы используете OxyPlot.PDF, он построен поверх PDFSharp, и у вас есть больше возможностей для настройки экспорта PDF.

  1. Удалить все предыдущие ссылки на OxyPlot.Pdf в свой проект.
  2. Загрузить OxyPlot.Pdf исходный код от: https://github.com/oxyplot/oxyplot
  3. В своем проекте в VS щелкните правой кнопкой мыши свое решение в «Обозревателе решений» и добавьте существующий проект.
  4. Перейдите к загруженному исходного кода и добавьте OxyPlot.Pdf.csproj
  5. правой кнопкой мыши проект и Add Reference
  6. Выбрать «Проекты» слева и установите флажок OxyPlot.Pdf справа. Нажмите ОК.
  7. Проверьте, что он работает при строительстве и запуске проекта.
  8. Перейдите в файл PdfRenderContext.cs и найдите метод PdfRenderContext в верхней части.
  9. Добавьте код ниже, затем создайте и запустите проект.

Этот код создает документ MigraDoc, а затем объединяет его с OxyPlot PdfDocument.

public PdfRenderContext(double width, double height, OxyColor background) 
    { 
     //*** Original Code - Don't change **// 
     this.RendersToScreen = false; 
     this.doc = new PdfDocument(); 
     var page = new PdfPage { Width = new XUnit(width), Height = new XUnit(height) }; 
     this.doc.AddPage(page); 
     this.g = XGraphics.FromPdfPage(page); 
     if (background.IsVisible()) 
     { 
      this.g.DrawRectangle(ToBrush(background), 0, 0, width, height); 
     } 

     //*** New Code to add footer **// 
     Document myDoc = new Document(); 
     Section mySection = myDoc.AddSection(); 
     Paragraph footerParagraph = mySection.Footers.Primary.AddParagraph(); 
     footerParagraph.AddText(DateTime.Now.ToShortDateString()); 
     footerParagraph.Format.Alignment = ParagraphAlignment.Right; 

     MigraDoc.Rendering.DocumentRenderer docRenderer = new MigraDoc.Rendering.DocumentRenderer(myDoc); 
     docRenderer.PrepareDocument(); 
     docRenderer.RenderObject(g, XUnit.FromInch(9.5), XUnit.FromInch(8), "1in", footerParagraph); 
    } 

При экспорте PDF штамп даты теперь добавляется в нижний правый угол PDF. Обратите внимание, что я работал с ландшафтом 8.5x11 дюймов, поэтому вам может потребоваться изменить положение, если вы не видите его на графике. Верхний левый угол равен 0,0. После того, как он работает, создайте проект OxyPlot.Pdf для создания DLL, а затем вы можете добавить его в качестве ссылки на ваш проект и удалить исходный код.

Результат:

enter image description here

Смежные вопросы