gpt4 book ai didi

c# - 如何在 iTextSharp 中绘制垂直渐变?

转载 作者:行者123 更新时间:2023-11-30 12:42:14 26 4
gpt4 key购买 nike

我正在尝试在 iTextSharp pdf 文档的底部绘制垂直渐变:

PdfShading shading 
= PdfShading.SimpleAxial(pdfWriter, 0, document.PageSize.Height,
document.PageSize.Width, 0, BaseColor.WHITE, BaseColor.GREEN);
PdfShadingPattern pattern = new PdfShadingPattern(shading);
pdfContentByte.SetShadingFill(pattern);
pdfContentByte.Rectangle(0, 0, document.PageSize.Width, 70);
pdfContentByte.Fill();

这会在我希望创建它的确切位置创建一个渐变,但渐变是从左(白色)到右(绿色)的水平方向。

我希望渐变从顶部(白色)到底部(绿色)是垂直的。

像这里的人那样修改坐标 (Does iTextsharp support multi color diagonal gradients?) 并没有解决问题。我也尝试过旋转文档,但效果不佳。

最佳答案

您使用了错误的坐标。在 Java 中,您需要这样的东西:

public void createPdf(String dest) throws IOException, DocumentException {
Rectangle pageSize = new Rectangle(150, 300);
Document document = new Document(pageSize);
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(dest));
document.open();
PdfShading shading = PdfShading.simpleAxial(writer,
0, pageSize.getHeight(),
0, 0,
BaseColor.WHITE, BaseColor.GREEN);
PdfShadingPattern pattern = new PdfShadingPattern(shading);
PdfContentByte canvas = writer.getDirectContent();
canvas.setShadingFill(pattern);
canvas.rectangle(0, 0, pageSize.getWidth(), pageSize.getHeight());
canvas.fill();
document.close();
}

完整示例代码请参见 GradientTopToBottom

你看出区别了吗?

  • 您从左上角 (0, document.PageSize.Height) 到右下角 (document.PageSize.Width, 0)。那是一条对角线。
  • 您想从顶部 (0, document.PageSize.Height) 到底部 (0, 0),这会导致以下结果:gradient_top_to_bottom.pdf

enter image description here

关于c# - 如何在 iTextSharp 中绘制垂直渐变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34433510/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com