首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iTextSharp覆盖图像

iTextSharp覆盖图像
EN

Stack Overflow用户
提问于 2011-03-16 07:34:57
回答 1查看 2.9K关注 0票数 2

大家好,我有一个例子,我有一个标志图像作为一些艺术作品的一部分。

如果用户上传了新徽标,我会看到一个比默认徽标更大的表单域。

然后,我使用该表单域来定位新图像。

问题是,我需要将该表单域的背景颜色设置为白色,以便在新图像比旧徽标小的情况下覆盖旧徽标。

我所做的是:

代码语言:javascript
复制
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命令,映像替换工作正常。

有没有办法在图层上设置堆叠顺序?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-16 08:08:00

注释(如表单域)始终位于页面内容的顶部。注解Z顺序是注解数组在给定页面上的顺序。

页面内容Z顺序就是所有内容出现在内容流中的顺序。新的绘图操作符位于proceeding操作符之上。

如果你想覆盖你的旧图像,在它上面画一个白框,然后在上面画一个新的徽标。不需要担心注释。

实际上,您真正需要做的就是不设置imageField的背景色。您已经在缩放新徽标以匹配旧徽标的大小。

然而,如果你真的需要画那个白框,那就相当简单了:

代码语言:javascript
复制
overContent.setColorFill(iTextSharp.text.Color.WHITE);
overContent.rectangle( logoRect );
overcontent.fill();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5319307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档