C# itextsharp在表格单元格中的圆形图像上添加文本 我需要一张有多个圆柱的桌子,我在不同的细胞里有不同的彩色圆圈,中间有一个数字。 与下面的模型相似,但所有内容都集中且平等

C# itextsharp在表格单元格中的圆形图像上添加文本 我需要一张有多个圆柱的桌子,我在不同的细胞里有不同的彩色圆圈,中间有一个数字。 与下面的模型相似,但所有内容都集中且平等,c#,pdf-generation,itextsharp,z-index,C#,Pdf Generation,Itextsharp,Z Index,我尝试了以下方法: PdfContentByte canvas = writer.DirectContent; PdfTemplate template = canvas.CreateTemplate(40, 40); template.SetLineWidth(1f); template.Circle(15f, 15f, 15); template.Stro

我尝试了以下方法:

     PdfContentByte canvas = writer.DirectContent;
                PdfTemplate template = canvas.CreateTemplate(40, 40);
                template.SetLineWidth(1f);
                template.Circle(15f, 15f, 15);
                template.Stroke();

                iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(template);
                img.Alignment = iTextSharp.text.Image.UNDERLYING | iTextSharp.text.Image.ALIGN_CENTER;
                Phrase imgPhrase = new Paragraph(new Chunk(img, 1f, 1f));


 PdfPCell meAnswerCell = new PdfPCell();
            meAnswerCell.Colspan = 1;

            meAnswerCell.BorderWidthBottom = 0;
            meAnswerCell.HorizontalAlignment = Element.ALIGN_CENTER;
            string meAnswerText = "1;
            Phrase phrase = new Phrase(meAnswerText, questionFont);

            Paragraph para = new Paragraph();

            para.Add(imgPhrase);
            para.Add(phrase);
            para.Alignment = Element.ALIGN_CENTER;
            meAnswerCell.AddElement(para);

            answersTable.AddCell(meAnswerCell);
但我最终得到了这样的结果。(我还没有试着设置颜色)。我无法将图像和文本放在同一个位置

我也尝试过以下这篇文章:

这解释了如何在单元格上放置事件以设置单元格的背景图像,但我的圆圈显示在页面的一半


有人举过这样的例子吗?

有很多不同的方法来实现你想要的

事实上,我刚刚投票结束了一个问题,因为它是

在您的情况下,您也可以从文档中受益。中有一些例子解释了如何使用cell事件,但是您的需求与本书中的几个例子非常相似

您可以使用单元格事件来绘制单元格的背景,如日历示例所示:,但也可以使用通用标记事件来满足您的要求:

你看到IMDB这个词在一个椭圆中是如何很好地表达的了吗?你可以用同样的方法把一个数字放在一个圆圈里

使用此代码,可以绘制椭圆(将其更改为圆相当容易):

通过此代码段,您将介绍以下事件:

GenericTags gevent = new GenericTags();
writer.PageEvent = gevent;
使用此代码段,可以使用通用标记标记

chunk.SetGenericTag("circle");

谢谢,这太棒了!现在我的圆圈中有了我的号码,但是如何将整个东西对齐到PdfPCell的中心?在文本模式下工作时:将单元格的对齐方式更改为
元素。对齐_center
;在复合模式下工作时:将
段落
的对齐方式更改为
元素。居中对齐
。如果对文本或复合模式有疑问,请咨询
chunk.SetGenericTag("circle");