大家好,我有一个例子,我有一个标志图像作为一些艺术作品的一部分。
如果用户上传了新徽标,我会看到一个比默认徽标更大的表单域。
然后,我使用该表单域来定位新图像。
问题是,我需要将该表单域的背景颜色设置为白色,以便在新图像比旧徽标小的情况下覆盖旧徽标。
我所做的是:
foreach (var imageField in imageReplacements)
{
fields.SetFieldProperty(imageField.Key, "bgcolor", iTextSharp.text.Color.WHITE, null);
fields.RegenerateField(imageField.Key);
PdfContentByte overContent = stamper.GetOverContent(imageField.Value.PageNumber);
float[] logoArea = fields.GetFieldPositions(imageField.Key);
if (logoArea != null)
{
iTextSharp.text.Rectangle logoRect = new iTextSharp.text.Rectangle(logoArea[1], logoArea[2], logoArea[3], logoArea[4]);
var logo = iTextSharp.text.Image.GetInstance(imageField.Value.Location);
if (logo.Width >= logoRect.Width || logo.Height >= logoRect.Height)
{
logo.ScaleToFit(logoRect.Width, logoRect.Height);
}
logo.Alignment = iTextSharp.text.Image.ALIGN_LEFT;
logo.SetAbsolutePosition(logoRect.Left, logoArea[2] + (logoRect.Height - logo.ScaledHeight) / 2);
// left: logoArea[3] - logo.ScaledWidth + (logoRect.Width - logo.ScaledWidth) / 2
overContent.AddImage(logo);
}
}这样做的问题是,字段的背景颜色设置为白色,然后图像就不会出现。我删除了SetFieldProperty和RegenerateField命令,映像替换工作正常。
有没有办法在图层上设置堆叠顺序?
发布于 2011-03-16 08:08:00
注释(如表单域)始终位于页面内容的顶部。注解Z顺序是注解数组在给定页面上的顺序。
页面内容Z顺序就是所有内容出现在内容流中的顺序。新的绘图操作符位于proceeding操作符之上。
如果你想覆盖你的旧图像,在它上面画一个白框,然后在上面画一个新的徽标。不需要担心注释。
实际上,您真正需要做的就是不设置imageField的背景色。您已经在缩放新徽标以匹配旧徽标的大小。
然而,如果你真的需要画那个白框,那就相当简单了:
overContent.setColorFill(iTextSharp.text.Color.WHITE);
overContent.rectangle( logoRect );
overcontent.fill();https://stackoverflow.com/questions/5319307
复制相似问题