如何将着色模式添加到自定义形状

时间:2014-10-27 11:01:39

标签: itext

我使用iText

绘制了如下的等边三角形
canvas.setColorStroke(BaseColor.BLACK);
int x = start.getX();
int y = start.getY();
canvas.moveTo(x,y);        
canvas.lineTo(x + side,y);
canvas.lineTo(x + (side/2), (float)(y+(side*Math.sin(convertToRadian(60)))));
canvas.closePathStroke();

我想在这个形状中使用多色渐变,即用包含BaseColor.PINKBaseColor.BLUE的阴影填充它。我只是找不到用iText做到这一点的方法吗?

1 个答案:

答案 0 :(得分:1)

我创建了一个名为ShadedFill的示例,它使用从粉红色到蓝色的阴影图案填充您正在绘制的三角形,如shaded_fill.pdf所示:

enter image description here

PdfContentByte canvas = writer.getDirectContent();
float x = 36;
float y = 740;
float side = 70;
PdfShading axial = PdfShading.simpleAxial(writer, x, y,
        x + side, y, BaseColor.PINK, BaseColor.BLUE);
PdfShadingPattern shading = new PdfShadingPattern(axial);
canvas.setShadingFill(shading);
canvas.moveTo(x,y);        
canvas.lineTo(x + side, y);
canvas.lineTo(x + (side / 2), (float)(y + (side * Math.sin(Math.PI / 3))));
canvas.closePathFillStroke();

如您所见,您需要创建一个PdfShading对象。我创建了一个轴向着色,从坐标(x, y)到坐标(x + side, y)从粉红色到蓝色不等。使用此轴向着色,您可以创建PdfShadingPattern作为setShadingFill()方法的参数,以设置canvas的填充颜色。

有关完整的源代码,请参阅ShadedFill

相关问题