我正在使用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
答案 0 :(得分:0)
我必须对我的项目做同样的事情,并且认为我分享了如何为其他需要页脚的人管理它。
我无法找到任何内置的OxyPlot方法来添加页眉或页脚,但如果您使用OxyPlot.PDF,它就构建在PDFSharp之上,您可以有更多选项来自定义PDF导出。 / p>
OxyPlot.Pdf.csproj
此代码创建一个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,然后您可以将其添加为项目的引用并删除源代码。
结果: