我正在使用iText 5.2.1,我尝试使用带有alpha通道的BaseColor构造函数,即
public BaseColor(final int red, final int green, final int blue, final int alpha)
但是当我实际绘制文字或形状时,似乎没有考虑alpha通道。 例如,如果我试试这个
Font f = ....;
f.setColor(new BaseColor(130, 130, 130, 50);
PdfContentByte cb = writer.getDirectContent();
ColumnText.showTextAligned(cb, Element.ALIGN_LEFT, new Phrase("my text", f),
refPointX, refPointY, 0);
用指定的颜色书写但没有alpha信息的文本,即100%不透明度的颜色。 如果我尝试绘制一些形状并指定一个透明的填充颜色,也会发生同样的事情。
在 iText in Action第二版一书中,没有关于颜色透明度的内容。
我错了吗?
答案 0 :(得分:11)
我在itext邮件列表中找到了一些东西,我试过......工作! 这是一个没有文档记录的功能。无论如何,以下代码可以满足我的需求:
PdfContentByte cb = writer.getDirectContent();
PdfGState gState = new PdfGState();
gState.setFillOpacity(0.1f);
cb.setGState(gState);
如果是绘制文字或形状,则它们具有10%的不透明度。使用gState.setStrokeOpacity
我还可以设置笔画的不透明度。