PDFsharp在图形下绘制文本 [英] PDFsharp draws text under graphics
问题描述
我正在使用PDFsharp从头开始生成PDF文档。我正在尝试在渐变填充矩形的顶部写入文本。生成文档后,渐变显示在文本顶部,使文本完全隐藏。
using(var document = new PdfDocument ())
{
var page = document.AddPage();
var graphics = XGraphics.FromPdfPage(page,XGraphicsPdfPageOptions.Append);
graphics.SmoothingMode = XSmoothingMode.HighQuality;
var bounds = new XRect(graphics.PageOrigin,graphics.PageSize);
graphics.DrawRectangle(
new XLinearGradientBrush(
界限,
XColor.FromKnownColor(XKnownColor.Red),
XColor.FromKnownColor(XKnownColor.White),
XLinearGradientMode.ForwardDiagonal),
bounds);
graphics.DrawString(
Hello World!,
new XFont(Arial,20),
XBrushes.Black,
bounds.Center,
XStringFormats.Center);
document.Save(test.pdf);
document.Close();
}
如何使文字在矩形顶部呈现?
我发现后面绘制的任何图像都会显示在矩形的顶部。这只是隐藏在后面的文本。
试试这样:
< pre $ 使用(var document = new PdfDocument())
{
var page = document.AddPage();
var graphics = XGraphics.FromPdfPage(page,XGraphicsPdfPageOptions.Append);
graphics.SmoothingMode = XSmoothingMode.HighQuality;
var bounds = new XRect(graphics.PageOrigin,graphics.PageSize);
var state = graphics.Save();
graphics.DrawRectangle(
new XLinearGradientBrush(
界限,
XColor.FromKnownColor(XKnownColor.Red),
XColor.FromKnownColor(XKnownColor.White),
XLinearGradientMode.ForwardDiagonal),
bounds);
graphics.Restore(state);
graphics.DrawString(
Hello World!,
new XFont(Arial,20),
XBrushes.Black,
bounds.Center,
XStringFormats.Center);
document.Save(test.pdf);
document.Close();
}
不幸的是,根据此论坛帖子。
解决方法是:保存
和还原
XGraphics
操作之间的对象状态。
I am using PDFsharp to generate a PDF document from scratch. I am trying to write text on top of a gradient filled rectangle. After generating the document, the gradient appears on top of the text rendering the text completely hidden.
using (var document = new PdfDocument())
{
var page = document.AddPage();
var graphics = XGraphics.FromPdfPage(page, XGraphicsPdfPageOptions.Append);
graphics.SmoothingMode = XSmoothingMode.HighQuality;
var bounds = new XRect(graphics.PageOrigin, graphics.PageSize);
graphics.DrawRectangle(
new XLinearGradientBrush(
bounds,
XColor.FromKnownColor(XKnownColor.Red),
XColor.FromKnownColor(XKnownColor.White),
XLinearGradientMode.ForwardDiagonal),
bounds);
graphics.DrawString(
"Hello World!",
new XFont("Arial", 20),
XBrushes.Black,
bounds.Center,
XStringFormats.Center);
document.Save("test.pdf");
document.Close();
}
How can I make the text render on top of the rectangle?
I find that any images I draw later will appear on top of the rectangle. It’s only text that hides behind.
Try it like this:
using (var document = new PdfDocument())
{
var page = document.AddPage();
var graphics = XGraphics.FromPdfPage(page, XGraphicsPdfPageOptions.Append);
graphics.SmoothingMode = XSmoothingMode.HighQuality;
var bounds = new XRect(graphics.PageOrigin, graphics.PageSize);
var state = graphics.Save();
graphics.DrawRectangle(
new XLinearGradientBrush(
bounds,
XColor.FromKnownColor(XKnownColor.Red),
XColor.FromKnownColor(XKnownColor.White),
XLinearGradientMode.ForwardDiagonal),
bounds);
graphics.Restore(state);
graphics.DrawString(
"Hello World!",
new XFont("Arial", 20),
XBrushes.Black,
bounds.Center,
XStringFormats.Center);
document.Save("test.pdf");
document.Close();
}
Unfortunately, there is a bug in the library's code according to this forum post.
The workaround is to Save
and Restore
the XGraphics
object's state between operations.
这篇关于PDFsharp在图形下绘制文本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!