我正在使用iText 5.2.1,并且尝试通过Alpha channel 使用BaseColor构造函数,即

public BaseColor(final int red, final int green, final int blue, final int alpha)

但是当我实际绘制文本或形状时,似乎没有考虑Alpha channel 。
例如,如果我尝试这个
  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》第二版中,没有任何关于颜色透明度的内容。

我错了吗?

最佳答案

我在itext邮件列表中找到了一些东西,我尝试过,并且...行得通!
这是一个未记录的功能。无论如何,以下代码满足了我的需要:

PdfContentByte cb = writer.getDirectContent();
PdfGState gState = new PdfGState();
gState.setFillOpacity(0.1f);
cb.setGState(gState);

如果绘制文本或形状,则它们的不透明度为10%。使用gState.setStrokeOpacity,我还可以设置笔触的不透明度。

关于itext - iText是否尊重颜色透明度?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11311630/

10-13 08:24