在导出的OxyPlot图中添加页脚

时间:2015-06-23 14:38:19

标签: oxyplot

我正在使用OxyPlot导出图。

当我导出它们时,我想在这些图中添加一个页脚,其中包含保存的路径,时间戳等信息...
现在我这样做是通过在不同的位置层创建一个额外的X轴,然后将所有刻度和标签的大小设置为零,除了标题字体大小。

这是有效的,但正如您可能想象的那样,这是非常hacky并且看起来不那么好(因为您无法设置例如对齐)。

所以我的问题是,是否有可能在导出的情节中添加这样的页脚?

编辑:

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)

要导出我的情节模型,我使用PdfExporter,如下所示:

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

问候
Chriz

1 个答案:

答案 0 :(得分:0)

我必须对我的项目做同样的事情,并且认为我分享了如何为其他需要页脚的人管理它。

我无法找到任何内置的OxyPlot方法来添加页眉或页脚,但如果您使用OxyPlot.PDF,它就构建在PDFSharp之上,您可以有更多选项来自定义PDF导出。 / p>

  1. 删除项目中之前对OxyPlot.Pdf的任何引用。
  2. https://github.com/oxyplot/oxyplot
  3. 下载OxyPlot.Pdf源代码
  4. 在VS中的项目中,右键单击解决方案资源管理器中的解决方案'并添加现有项目。
  5. 导航至下载的源代码并添加OxyPlot.Pdf.csproj
  6. 右键单击您的项目并添加参考
  7. 选择' Projects'在左侧,选中右侧的OxyPlot.Pdf框。点击确定。
  8. 通过构建和运行项目来检查它是否正常工作。
  9. 转到PdfRenderContext.cs文件,找到顶部附近的PdfRenderContext方法。
  10. 添加以下代码,然后构建并运行您的项目。
  11. 此代码创建一个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