利用PdfContentByte 和 PdfWriter实现矢量图形渐变色变化
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(fileName, FileMode.Create));
PdfContentByte cb = writer.DirectContent;
//产生一个画板用于显示渐变色
PdfTemplate template = cb.CreateTemplate(500, 400);
PdfTransparencyGroup group = new PdfTransparencyGroup();
group.Put(PdfName.AS, PdfName.DEVICEGRAY);
//group.SetIsolated(false);
group.Isolated = false;
//group.SetKnockout(false);
group.Knockout = false;
//template.SetGroup(group);
template.Group = group;
//PdfShading radial = PdfShading.SimpleRadial(writer, 262, 186, 10, 262, 186, 190, BaseColor.BLUE, BaseColor.RED, true, true);
PdfShading radial = PdfShading.SimpleAxial(writer, 250, 1, 0, 1, color0, color1);
template.PaintShading(radial);
PdfDictionary mask = new PdfDictionary();
mask.Put(PdfName.TYPE, PdfName.MASK);
mask.Put(PdfName.S, new PdfName("Luminosity"));
mask.Put(new PdfName("G"), template.IndirectReference);
cb.SaveState();
///设置画布渐变的颜色,这一步很重要
PdfShadingPattern shading = new PdfShadingPattern(radial);
cb.SetShadingFill(shading);
PdfGState state = new PdfGState();
//state.Put(PdfName.SMASK, mask);//设置有透明
cb.SetGState(state);
//以下代码用于确认渐变区块的显示位置以及大小
cb.MoveTo(250, 0);
cb.LineTo(250, 400);
cb.LineTo(0, 400);
cb.LineTo(0, 0);
cb.ClosePath();
cb.Fill();
cb.RestoreState();