本文介绍了PDFsharp在图形下绘制文本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 29岁程序员,3月因学历无情被辞! 我正在使用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(); } 如何使文字在矩形顶部呈现? 我发现后面绘制的任何图像都会显示在矩形的顶部。这只是隐藏在后面的文本。解决方案试试这样: 使用(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在图形下绘制文本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云!
08-03 23:31
查看更多