gpt4 book ai didi

android - 如何更改 itext 中线条的颜色?

转载 作者:行者123 更新时间:2023-11-29 00:04:16 25 4
gpt4 key购买 nike

我在 pdf 中画了一个矩形。在里面我画了多条线。我希望线条以不同的颜色显示为 .为此,我编写了以下代码行,但它不起作用。

所有线条均以黑色显示,包括在 pdf 上绘制的矩形

 PdfContentByte cb = writer.getDirectContent();
try {

cb.setFontAndSize(BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, true), 24);
cb.rectangle(0f,0f,842f,595f);
cb.saveState();

// Rectangle rect=new Rectangle(56.69f,56.69f,737f,510.23f);
final float bx=0f;
float bX=842f;
float by=0f;
float bY=595f;
float x=14.17f;
int count=0;

float bXX=14.17f+bx;


for(float k=0;k<842;k=k+x)
{
cb.moveTo(k+bx,by);
cb.lineTo(k+bx,bY+bx);

cb.setLineWidth(7);
cb.setColorStroke(new BaseColor(Color.BLUE));

}



for(float i=0;i<595;i=i+x)
{
cb.moveTo(bx,by+i);
cb.lineTo(bx+bX,i+by);
cb.setColorStroke(new BaseColor(Color.RED));
}



// ColumnText.showTextAligned(cb, Element.ALIGN_LEFT,new Phrase("LEAD I"), 0,(12*graphHeight), 0);
cb.restoreState();
cb.stroke();


} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

最佳答案

所有线条都是在您调用 stroke() 方法时绘制的,使用在该特定时刻“Activity ”的颜色。

所以如果你这样做:

cb.setColorStroke(new BaseColor(Color.RED));
cb.moveTo(x1, y1);
cb.lineTo(x2, y2);
cb.setColorStroke(new BaseColor(Color.BLUE));
cb.moveTo(x3, y3);
cb.lineTo(x4, y4);
cb.stroke();

这是非法语法,因为一旦开始构造路径,在更改状态之前只允许进行其他路径构造操作、剪切操作和(最后)绘图操作。尽管如此,大多数 PDF 查看器都可以容忍这样的语法错误:从 x1, y1x2, y2 以及从 x3, y3x4, y4 将以蓝色绘制,因为这是执行 stroke 操作时的当前图形状态。

如果要从x1,y1x2,y2的直线画成红色,需要再插入一个stroke() 操作:

cb.setColorStroke(new BaseColor(Color.RED));
cb.moveTo(x1, y1);
cb.lineTo(x2, y2);
cb.stroke();
cb.setColorStroke(new BaseColor(Color.BLUE));
cb.moveTo(x3, y3);
cb.lineTo(x4, y4);
cb.stroke();

在您的代码中,您的 setColorStroke() 操作没有任何效果,因为您正在使用 saveState()restoreState() 错误:

// you save the current graphics state: e.g. stroke color is black.
cb.saveState();
// you change the stroke color: it is now blue
cb.setColorStroke(new BaseColor(Color.BLUE));
// you return to the graphics state from before saveState:
cb.restoreState();
// the stroke color is now black again
// all changes to the graphics state after saveState() are rolled back

您应该重新组织保存和恢复图形状态的方式,并且您应该使用您刚刚定义的颜色绘制线条和形状,然后再次将这些颜色更改为其他颜色。

关于android - 如何更改 itext 中线条的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35193873/

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